DWVA手把手教程(四)——SQL注入(Post)
前言
一开始让我写Post方法实现Sql注入我是拒绝的
可是无奈之前已经许诺过了
虽然post方法注入相对简单
但是我还是想在此总结出更多的post注入方法与思路
虽然DWVA中并没有post注入
但因为属于基础课程我把内容并入到了DWVA教程中
总的来讲post注入主要有2+1种方式,
然而在此给出全网独家内容,满满干货。
唉,为什么是2+1?
(一)配合burp suite抓包注入
思路:借助burpsuite抓取post包,存为post.txt文件
直接 sqlmap -r post.txt
开始进行注入测试
(二)自动搜索表单
sqlmap.py -u URL --forms
官方:--forms : Parse and test forms on target URL
其实自动搜索表单操作即使用sqlmap自带的抓包功能代替burpsuite功能
一旦发现post包,会收到提示:do you want to test this form? [Y/n/q]
回车(Y)后,会自动利用选择的post包进行注入测试
(三)干货:参数-p / --data ?
-p参数 官方:-p : TESTPARAMETER Testable parameter(s)
-p功能与--skip功能对立,sqlmap默认测试所有的GET和POST参数,当--level的值大于等于2的时候也会测试HTTP
Cookie头的值,当大于等于3的时候也会测试User-Agent和HTTP
Referer头的值。但是你可以手动用-p参数设置想要测试的参数。例如: -p
"id,user-anget",当你使用--level的值很大但是有个别参数不想测试的时候可以使用--skip参数。例如:--skip="user-angent.referer"
也就是说-p参数适用与一切参数指定的情况,并可-p "a,b"同时指定多个参数。
示例:
sqlmap -r post.txt -p "a,b"
sqlmap -u url -p "a,b"
注意此处参数不需赋值
--data=DATA 参数 官方:--data=DATA : Data string to be sent through POST (通过POST 发送数据字符串)
此参数是把数据以POST方式提交,sqlmap会像检测GET参数一样检测POST的参数。
貌似官方说法该参数只能用于post方式的注入漏洞中。
示例:
sqlmap -u url --data="a=1,b=1"
注意此处参数需要赋值
然而在get方式中也可以使用到
常规方法:sqlmap -u “http://192.168.1.111/Article.asp?classid=1”
data方法:sqlmap -u “http://192.168.1.111/Article.asp” --data=“classid=1”
好像有点多此一举的说- -。。。
所以还是推荐用在post方式中的说。。。
那么!!!拆台的也差不多该上了。。。。
咳咳,很明显-p参数的泛用性和使用难度上都优于--data参数,
那么--data参数存在的意义呢?
干货继续~
在我们的渗透测试工作中,偶尔会碰上-r 参数没有跑出来的情况
当然,--forms参数一样会是失败的,
(我们前面讲过了,这两种方式原理是一样的,只是获取包途径不同)
我们仔细观察下Post包中的参数
就会发现参数类型也是有所区分的
第一种:
这是类型便是我们常见的类型,-r / --forms 参数都可以正常解决
第二种:
这种类型就需要sqlmap -u url --data="name=1"的方式解决
(原因请参考常见的Post提交的基本方式)
-------------------------------------------------------------------------------------------------------------
花费两天的时间确认各种小细节,
只想为大家提供一点真真切切的干货
码字不宜,转贴请注明出处
在此感谢组织的小伙伴们:Parrot Security