标签:mic 不显示 表名 xxxx 破解 操作 regexp 相同 nbsp
首先我们来补充一下冲关前的小知识
1. left()函数: left(database(),1)=‘s’ left(a,b)从左侧截取a的前b位,正确则返回1,错误则返回0
例如上例中就是先查询database()数据库,从左面看他第一个字母是否是s,如果是则返回1,错误则返回0;
2.regexp函数:select user() regexp ‘r’ user()的结果是root,regexp为匹配root的正则表达式
例如上例中就是把查询到的user用户也就是root和r从左至右进行比较,相同是1,不同是0.
3. like函数: select user() like ‘ro%’ 匹配与regexp相似。
与上个函数类似,唯一不同就是加一个%
4. substr(a,b,c) select substr() XXXX substr(a,b,c)从位置b开始,截取a字符串c位长度
例如select substr((select database()),1,1)=‘s’; 匹配第一个字符是否是 s
5. ascii() 将某个字符串转化为ascii值
6.在python中 chr(数字)或者是ord(‘字母’) 使用python中两个函数可以转换判断ascii值
LESS5
首先输入?id=1
显示出来的是you are in
输入id=1000 是没有返回的,我们考虑为布尔盲注,即正确的情况下返回you are in ,错误的情况下没有返回
在输入’来试试
开始报错
我们可以得出为字符型
接下来我们不能依照1-4关中利用union select来查询列,因为正确只可以返回 you are in 得不到有效的信息
所以我们就需要前面讲解的铺垫知识了。
方法一:利用left函数比较,正确显示you are in 错误则不显示
这种方法相当于盲猜..很是麻烦,可以这样猜出来,但是效率太低了
后面猜的就不一一演示了。
方法二:利用ascii二分法
输入:
?id=1‘ and ascii(substr((select schema_name from information_schema.schemata limit 1,1),1,1)) >100--+
此时不显示,说明小于100
再将最后改为>50 依次测试,得到数据库库名第一个字母的ascii值为99
再根据转换可以得到为c
其实依旧为猜,效率十分低
方法三:利用burp工具抓包,进行暴力破解
首先,在浏览器中开启代理模式,如图操作,版本不一样可能不同
打开burp工具,开启代理功能。on为开启 off为关闭
假设我们不知道数据库表名,猜测第一个字母为a,输入?id=1‘ and left((select database()),1)=‘a‘--+
等待burp抓包
将数据发送到爆破模块
并在模块中先清除所有标记,然后将a作为变量点击add
如图选择,使用暴力破解
开始破解
我们可以发现s的返回值不同
所以第一位就是s
LESS6
标签:mic 不显示 表名 xxxx 破解 操作 regexp 相同 nbsp
原文地址:https://www.cnblogs.com/c1047509362/p/12342683.html