sqlmap注入点怎么找
sqlmap是注入渗透测试里最常用的自动化注入工具,但很多人卡在第一步:不知道拿什么去喂它。点找你给它一个URL,注入它报错说没找到注入点,点找你就傻眼了。注入其实找注入点这事儿,点找七分靠经验,注入三分靠工具,点找sqlmap只是注入替你跑完了最后那几公里。 最笨也最有效的点找方法,是注入拿所有带参数的请求去试。打开Burp Suite的点找历史记录,把每一个GET请求里的注入问号参数、POST请求里的点找表单字段都列出来。别嫌多,注入一个电商网站可能有几十个参数,但真正能用的往往就藏在那些不起眼的角落里——比如一个排序功能,一个搜索框,甚至一个用来接收用户ID的隐藏字段。我见过最离谱的注入点在一家医院的预约系统里,参数名叫“doctor_id”,返回的却是整个数据库的版本信息。 光有参数还不够,你得判断参数值是不是真的被拼进了SQL语句。有个土办法:在参数后面加个单引号,看页面报不报错。报错了别慌,那是好事,说明后端没过滤。但很多开发早就不写拼接SQL了,直接上预编译,这时候单引号就像打在棉花上,屁用没有。那怎么办?看响应时间。加个 再说说那些没有明显参数的场景。你打开一个网页,URL干干净净,连个问号都没有,但页面内容明显是根据你点击的菜单变化的。这时候翻翻前端JS代码,找找有没有AJAX请求往后台发了数据。很多开发图省事,把参数放在请求头里,或者用JSON格式POST出去。sqlmap默认只测常规参数,你得像猎狗一样把这些额外数据挖出来,然后手动构造请求文件喂给它。我上次测一个政府网站,注入点藏在Cookie的session值里,那玩意儿每五分钟变一次,sqlmap跑得满头大汗才测出来。 还有一类隐蔽的注入点,藏在文件名里。比如下载功能,URL长这样: 真到了用sqlmap的时候,别一上来就 最后说个反直觉的经验:很多新手喜欢找参数多的页面,觉得机会多。实际上,登录接口、密码重置这类功能,因为牵扯到业务逻辑,往往过滤得最严。反倒是那些没人维护的旧功能——比如一个十年没更新的搜索页,或者一个只对内部开放的报表下载点——才是注入点的温床。你打开一个网站,先看它的版权信息,越老的技术栈越容易出问题。毕竟,数据库不会自己升级,SQL注入的漏洞也不会自己消失。AND SLEEP(5),如果页面转了五秒才出来,说明你撞上了一个可注入的数值型参数——预编译语句对这类延时函数毫无办法,因为时间函数是数据库层面执行的,跟参数化查询没关系。/download.php?file=report.pdf。你把file参数改成report.pdf',看报错信息里有没有SQL关键字。很多系统会把文件名存进数据库做权限校验,然后再去磁盘上取文件。这种双重逻辑最容易出漏洞。更绝的是把注入点拼在ORDER BY子句里——排序字段,开发往往忘了过滤,而sqlmap的--order-by参数就是干这个的。--batch全自动。先用--level 3 --risk 2扫一遍,把可疑目标缩小到两三个,再手动加--string或--code参数去验证。level调太高会撞上WAF,触发封IP,那就得不偿失了。我习惯先在本地搭个靶机练手,把sqlmap的-v 6输出打开,看它到底发了什么payload,这样才知道哪些参数值得深挖。
-
上一篇
-
下一篇
- 随机阅读
- 搜索
-
- 友情链接
-