BUGKU WEB36
这关可以说的东西还挺多,涉及盲注,以及有关数据库一些数据转化,还有盲注脚本的编写,所以单独拿出来讲一下。
收集信息
打开页面后,发现只有一个登录框,想的就是SQL注入,在尝试了几种写法,以及利用sqlmap跑后,没啥收获,因为不知道过滤了什么,接下来扫了一下URL,看看有没有后台可以提供其他信息扫到了一个image,打开以后,得到这张图片,感觉还是要SQL注入
‘-(mid((passwd)from(-1))=’t’)-‘
fuzz测试过滤内容
利用burp进行fuzz测试看一下都有哪些字符被过滤了
一开始的时候构造了一个admin'+ 1'1
去跑字典,替换的是那个+号发现不管什么字符都被过滤了的样子,然后想了一下,会不会是空格被过滤了呀??,然后使用了admin’ 1’1 果然是这样,单引号没被过滤,但是空格被过滤了,接下来在用空格跑一遍字典试试
发现还是有一些没过滤的,比如说ascii select mid ,还有一些字符,而且,提示的那些字符是没过滤的,解题方向大概率就是盲注了,应该就是要编写脚本,那么我们知道编写脚本,需要知道条件,构造语句等等,所以继续构造SQL注入探索看看
利用现有字符构造注入语句
在继续SQL注入的时候发现,如果闭合引号,有两种不同情况:
1.一种是
2.另一种是
意味着什么呢:
password意味着不存在该账号
username意味着存在该账号
为什么呢?继续看下面
这里查找了一下网上大神们的write up,发现这里闭合引号的方式使用减号闭合的,其实不是很能理解为啥?
等找到答复再回来补吧
问完学长以后发现是这样的:
其实那个减号起的不是闭合作用,我们闭合就是用单引号闭合了,总结下来就是两点:
1.后面的负号起的不是闭合引号的作用,而是以运算为媒介的连接作用
2.为什么需要这个负号,是因为如果缺少这个负号,我们想输入的查询整体就会被分割
3.那其实就是说这个负号可以更换任意其他的运算符
总而言之,这里的payload,可以暂时写为:
1 | admin'-0-' |
我在使用
这里需要引入一个知识点:
就是上面这个username=0,所有数据都出来的原因,因为这个里的username定义为字符串,当遇到int类型的数据的时候,字符串会自动转化为int类型和这个0去匹配,而转化为int类型以后的数据为0所以,所有为都为字符组成的字符串就都和这个0匹配,所以全都罗列出来了
参考:https://stackoverflow.com/questions/18883213/why-select-from-table-where-username-0-shows-all-rows-username-column-is-v
https://blog.csdn.net/HaHa_Sir/article/details/93666147
SQL注入语句构造
接下来就是构造盲注语句,这里我们需要考虑,想要获取的时候什么
根据上面那张图片给的提示,大概语句是(mid((字段名)from(i)))=’j;
这个时候问题来了,字段名是啥,看了一下网上大神说的,根据表单提交的是passwd所以猜测是passwd,这个和数据库中的字段名是不一样的,就是猜测,接下来就是脚本的编写了,
首先是mid()函数:
mid(‘对象’,开始位置(从1开始),长度);
但是在这题中,逗号也被过滤了,所以这样写是行不通的,根据提示,我们需要利用from:
1 | admin'-(mid((passwd)from(-1))>'0')-' |
在这里,如果mid这里为真则为1,我们知道admin’-1-‘在数据库查询为空,即为username wrong,反之同理
参考:https://xz.aliyun.com/t/2583
接下来是写post类型的脚本:
直接贴出来吧
这里有必要说几个细节
1.网页的URL有两个 一个index.php,就是框框那边,另一个是login.php,这个才是回显的页面,所以你要发送post到这个页面去
2.这里我用了两次逆序,因为mid只能从后面截取,所以用了切片法进行逆序
1 | import requests |
得到结果以后发现是md5加密,拿去解密,得到bugkuctf,然后登陆一下,他说
这边说要ls命令?查了一下其实可以用catLinux cat命令cat命令:命令用于连接文件并打印到标准输出设备上。
cat>/filename
https://www.runoob.com/linux/linux-comm-cat.html
http://blog.sina.com.cn/s/blog_52f6ead0010127xm.html
小结:
感觉从这关学到了挺多东西的:
1.对于盲注的理解更深了,比如如何去构造闭合语句
2.mysql一些更基础的东西
3.脚本的编写也更加得心应手了,因为其实模板都一样
4.信息收集的重要性——盲注语句的编写,,过滤了什么
5.一些细节要注意哇!!!
BUGKU WEB36