SQL注入 哭了没想到布尔盲注既然是这样的!!!!

1.为什么要去理解该知识点

2.原理

3.自己的理解和实践

4.CTF题目案例




声明一点以下可能说的不是很友好,所以如有敏感词汇请评论我,作者会改


日常抱怨话语:哎,通过对报错注入的理解,以前傻傻的我认为的报错注入就是盲注,直到昨天我才明白报错注入与盲注并不是同一种,哎,果然将所学的写出来,真的能改变以前很多错误的地方



为什么要去理解该知识点

今天必然是讲盲注,毋庸置疑玩过CTF的WEB都遇到过盲注,而且CTF特别喜欢靠盲注,第一是你对知识点的掌握,第二就是你对脚本或工具的掌握,因为大部分盲注都是需要工具或脚本去将被过滤的词找出来,然后在将未被过滤的词进行爆破







原理

根据大佬们的博文可以总结一下常见的盲注分为二种: 1.布尔盲注 2.时间延时盲注

布尔盲注

老规矩要想知道其原理先了解布尔盲注函数
这里先开个小×,很多人可能会联想到布尔注入与联合注入(不管你联没联想到,反正我联想到了),其实二者很好区别,很多人区别不了可能是因为order by这个函数,其实order by是属于盲注里面的,那为什么会用到联合注入里面,其实很简单,盲注是联合注入的父类,更简单的说联合注入是盲注的升级版,不过有条件,那就是要有回显(指的就是那些页面出现1,2,3,4这些),所以能联合注入的其实都可以布尔盲注,不信可以去试试,没写脚本,你看能累晕你吗
步入正题:
1.Substring(min)
2.Length
3.Ascii

Substring

编程语言都应该很清楚,截取字符串,将指定字符串进行长度截取
substring(str, pos, len),即:substring(被截取字符串,从第几位开始截取,截取长度)
但是CTF就喜欢过滤掉你这些常见函数,但是别担心,等价函数很多
1.left(str, len),即:left(被截取字符串, 截取长度)
2.right(str, len),即:right(被截取字符串, 截取长度)
3.mid(str,pos),即:mid(被截取字符串, 从第几位开始截取)
4.mid(str,pos,len),即:mid(被截取字符串,从第几位开始截取,截取长度)
//按关键字进行读取
5.substring_index(str, delim, count),即:substring_index(被截取字符串,关键字,关键字出现的次数)
//搜索匹配位置
6.instr(str,substr) 在一个字符串str中搜索指定的字符substr,返回发现指定的字符的位置index
只要它做的不很过分,你都可以用这些去puzzing

Length
还能说什么,计算出字符串长度,如果被过滤掉可以用char_length(),也是计算出字符串长度只是二者意义不一样但是答案还是一样的,OCTET_LENGTH(str),CHARACTER_LENGTH(str)也差不多
ascii

计算字符的ascii值,等价函数有ORD(str),CONV(N,from_base,to_base)
看到这里,就很疑惑,盲注原理是什么,其实很简单,就是如果sql语句错误那页面就会报错,正确无疑就显示正常界面
所以我们可以通过上面的函数进行猜测当前数据库名,表名,列名

length(database())=8

判断当前数据库名的长度

substring(database(),1,1)='a'
Ascii(substring(database(),1,1))=96

判断当前数据库名的第一个字符是否为a
判断当前数据库名的第一个字符的ascii是否为96
如果不是,页面就会报错,正常则会正常显示
通过这样查询可以推出数据库名

substring((select group_concat(table_name) from information_schema.tables where table_schema='security') ,1,1)='a'

判断表名的第一个字符为a
通过这样就可以查找到数据库名,表名,列名
不过手动注入,必然会很麻烦而且很浪费时间,所以一般都是工具或者脚本









CTF题目案例

哎,身为菜鸡的我找了很久都没找到一个完全考察布尔注入CTF,找到了结果那个平台好像也暂时关服了,所以那就查考一下关于这个题的writeup

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值