主页 > 网络知识 > 六问MySQL?你敢来挑战吗?

六问MySQL?你敢来挑战吗?

 

六问MySQL?你敢来挑战吗?

 

很久之前就想总结一篇SQL注入及其更深一层的渗透方面的笔记了,奈何一是下不了决心,二是(好吧,还是下不了决心)

 

六问MySQL?你敢来挑战吗?

 

今天无意之间翻找出自己之前学习做的笔记,决定重新整理、学习、分享,若其中有什么错误,还希望您们能够及时提出来。(本文主要以MySQL,后期还要学习MSSQL、Oracle)

一问?何为SQL注入

所谓SQL注入,就是用户在Web表单等能与数据库交互的地方构造特殊的SQL命令,欺骗服务器执行,泄露数据库的信息,甚至getshell。

 

六问MySQL?你敢来挑战吗?

 

二问?种类如何划分 (1)以注入点分类

数字型注入
字符型注入
搜索型注入
宽字节注入
Base64变形注入

(2)以提交方式分类

GET注入
POST注入
Cookie注入
XFF注入
User_Agent注入

(3)以执行效果分类

联合注入
报错注入
时间盲注
布尔盲注
堆注入

由于篇幅问题(主要是懒╰(‵□′)╯)在这里,就不详细介绍每一种注入的详情了,可直接针对某一种百度,会出现很多优秀的讲解和实战文章的。

 

六问MySQL?你敢来挑战吗?

 

三问?涵盖哪些常用函数 (1)字符串截取函数

mid(string,start[,length])
left(string,length)
substr(string,start,length)
substring(string,start,length)

(2)字符串编码转换函数

ascii()
ord()
hex()
unhex()

(3)字符串连接函数

concat(str1,str2,str3,…):将多个字符串连接成一个字符串(中间任何一个参数为null,返回值就会为null)
concat_ws(separater,str1,str2,..):和concat()一样,将多个字符串连接成一个字符串,但是可以一次性指定分隔符
group_concat():将group by产生的同一个分组中的值连接起来,返回一个字符串结果。

(4)报错注入函数

floor()
extractvalue()
updatexml()
exp()
polygon()
multipoint()
GeometryCollection()
multilinestring()
multipolygon()
linestring()
报错注入函数常用的有前面5种。

(5)盲注函数

if(a,b,c):条件a为真,则b被执行,否则c被执行
sleep():休眠时间
benchmark():benchmark(count,expr)函数的执行结果就是将expr表达式执行count次数。
注:对于盲注,还需结合前面介绍的函数(尤其是字符串截取函数)。此外,盲注的手工量比较大,可以结合burpsuite使用。

 

六问MySQL?你敢来挑战吗?

 

四问?怎么花式绕墙 (1)手工绕过

(1.1) 绕过空格
注释符/**/、括号、加号、%20、%09、%0a、%0b、%0c、%0d、%a0、%00
(1.2)绕过引号
使用十六进制
(1.3)绕过逗号
(使用from、offest、join)
例如,对于limit绕过可以使用offset来绕过:
select * from users limit 0,1
等价于下面这条SQL语句
select * from users limit 1 offset 0
又比如:
select substr(database() from 1 for 1)
(1.4)绕过=
使用like、rlike、regexp或者使用>、<
(1.5)绕过“>”、”<”
使用greatest()、least()、between()
(贴一下在别人那儿学到的一个技巧,如下图)

 

六问MySQL?你敢来挑战吗?

 

(1.6)绕过union、select、where

 

六问MySQL?你敢来挑战吗?

 

(2)sqlmap工具

sqlmap参数tamper自带了一些常见的绕过脚本:

说点什么吧
  • 全部评论(0
    还没有评论,快来抢沙发吧!