码迷,mamicode.com
首页 > 数据库 > 详细

sql-lib闯关之5-6

时间:2020-02-21 20:34:16      阅读:99      评论:0      收藏:0      [点我收藏+]

标签: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

sql-lib闯关之5-6

标签:mic   不显示   表名   xxxx   破解   操作   regexp   相同   nbsp   

原文地址:https://www.cnblogs.com/c1047509362/p/12342683.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!