内容简介:近日在利用sqlmap注入测试时遇到一个诡异的现象,高版本sqlmap无法检测出注入,但是低版本的可以测出注入,并且能跑出数据不是误报,经过对比测试和查看sqlmap源码,发现两个小坑。注入点形式:json……”whereparams”:[{“name”:”keyWord”,”value”:”test”}]}
0x00 概述
近日在利用sqlmap注入测试时遇到一个诡异的现象,高版本sqlmap无法检测出注入,但是低版本的可以测出注入,并且能跑出数据不是误报,经过对比测试和查看sqlmap源码,发现两个小坑。
0x01 情景重现
注入点形式:json
……”whereparams”:[{“name”:”keyWord”,”value”:”test”}]}
可注入参数:value
sqlmap命令:
python sqlmap.py -r sqlpk.txt –flush-session -vv
sqlmap v1.2.11无法注入
sqlmap v1.2成功注入
同理v1.2.10无法注入,v1.1.12可以注入
经过分析,发现两个问题:
(1)v1.2.11(/v1.2.10/v1.2.9/master)的boundaries.xml没有了针对模糊查询(%)的测试,而v1.2(/v1.1.12/1.1.4/1.2.2)则有。
(2)v1.2.11(/v1.2.10/1.2.9/master)必须手动设置json的某个参数为*才能对这个参数进行注入,否则payload直接跟在json后导致无法注入,而v1.2(/v1.1.12)则可以默认回车(y)即可对json的某个参数注入。
0x02 详细测试
问题(1):
先了解sqlmap的payload组成:
//图片来源 https://www.freebuf.com/column/161797.html
看看v1.2的测试payload:
使用了payload:%‘ and 5731=5731 and ‘%’=’
这是挺常见的搜索框注入
看看V1.2的boundaries.xml:
而v1.2.11的boundaries.xml没有对模糊查询的注入测试!
https://github.com/sqlmapproject/sqlmap/blob/master/xml/boundaries.xml
于是添加模糊查询的注入测试到v1.2.11的该文件中,并手动添加*到注入参数(如value),即可成功注入!
pr得到答复是因为误报太多所以移除了相关payload,但是会有限的恢复。
https://github.com/sqlmapproject/sqlmap/pull/3372
问题(2):
对比v1.2和v1.2.11的payload:
可以看出直接将payload接在json末尾了。
在注入参数value手动添加*
%22whereparams%22%3A%5B%7B%22name%22%3A%22keyWord%22%2C%22value%22%3A%22*%22%7D%5D%7D
即可成功注入!
0x03 结语
1. 利用sqlmap测试的时候建议加上-vv。
2. 遇到json参数尽量加手动*(针对某些版本的sqlmap)。
3. 建议添加模糊查询的测试payload,个人认为误报还是好过漏报,况且是很常见的模糊查询注入。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 很简单的Flutter填小坑
- EF Core HasQueryFilter 的小坑
- Go:json.Unmarshal 遇到的小坑
- redigo中PubSub的一点小坑
- 【小坑速记】JDK加解密Key长度限制
- autocomplete light配置xadmin使用时一记小坑
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Fluent Python
Luciano Ramalho / O'Reilly Media / 2015-8-20 / USD 39.99
Learn how to write idiomatic, effective Python code by leveraging its best features. Python's simplicity quickly lets you become productive with it, but this often means you aren’t using everything th......一起来看看 《Fluent Python》 这本书的介绍吧!