当前位置:首页 > 时尚 > 怎样用sqlmap 正文

怎样用sqlmap

来源:烟消火灭网   作者:百科   时间:2026-10-17 05:51:24

sqlmap这东西,样用说白了就是样用一把自动化的SQL注入测试枪。你不需要手搓payload,样用不需要记一堆数据库语法,样用敲一条命令,样用它自己就能探测、样用利用、样用甚至把整个数据库给你拖出来。样用我见过太多人把它当黑客玩具,样用但真正会用的样用人,反而把它当安全检查的样用放大镜。

先说安装。样用别去官网编译了,样用Kali里自带,样用Windows用户直接Python pip install sqlmap,样用三分钟的事。我见过最蠢的用法是拿它去打没有参数的URL——那等于拿大炮轰空气。你得先确认目标存在动态参数,比如`http://example.com/product?id=1`,这个`id`就是入口。

基本姿势是这样:
`python sqlmap.py -u "http://example.com/product?id=1" --batch`
`--batch`是自动回答所有问题,省得它问你“检测到疑似注入,是否继续?”你还要手动敲y。第一次跑,它会先测注入点,然后问你要不要测数据库类型,接着开始枚举表、字段、数据。整个过程就像剥洋葱,一层一层往里钻。

但我不建议你上来就自动拖库。那会触发WAF,对方日志里全是你的IP。更聪明的做法是先做轻量探测:
`python sqlmap.py -u "http://example.com/product?id=1" --technique=B --current-db`
只测布尔盲注,只拿当前数据库名。这一步如果通了,再逐步升级。我见过有人直接跑`--dump-all`,结果对方运维当场封IP,连内网都进不去了——这属于自杀式扫描。

真正好用的参数是`--level`和`--risk`。默认level 1只测GET参数,level 3才会测Cookie和User-Agent头,level 5连Referer都不放过。我实测过,很多站点的注入藏在`X-Forwarded-For`头里,你只测URL参数等于白忙。但注意,level越高请求越多,容易被发现。我的习惯是`--level 3 --risk 2`,够用且不至于太吵。

还有`--tamper`这个参数,简直是绕过WAF的瑞士军刀。比如遇到过滤空格的情况,加`--tamper=space2comment`,把空格替换成`/**/`注释符;遇到对单引号敏感的,用`--tamper=apostrophemask`。我上次测一个政府网站,默认payload全被拦截,换了个`between`的tamper,直接通了。这玩意儿就像方言,你得懂对方WAF的脾气。

最容易被忽略的是`--proxy`。如果你用的是公司网络,或者你不想让目标看到你的真实IP,挂个SOCKS5代理是基本素养。我习惯先跑`--check-tor`确认代理可用,再开始正式扫描。别笑,有人直接裸IP打生产环境,第二天警察就上门了——虽然sqlmap是合法工具,但未经授权用它扫描,性质完全不同。

说实话,sqlmap最大的坑不是技术,而是人的心态。它太容易上手了,以至于很多人忘了自己到底在干什么。我曾经给一个客户做渗透测试,发现他们内部系统有个注入点,用sqlmap三分钟就把用户表拖出来了。但真正让我惊讶的是,他们开发居然不知道`id`参数能拼SQL——那代码写得跟面条一样,连预编译都没用。

所以我的建议是:如果你是为了学习,找本地靶场(比如DVWA、sqli-labs)练手,把`--technique`的参数挨个试一遍,理解每种注入的原理。如果你是为了工作,记得先拿到书面授权。sqlmap只是个工具,用得好是安全审计利器,用不好就是违法的铁证。

最后提醒一句,跑完sqlmap记得删日志。不是心虚,是避免留下太多痕迹,尤其当你用的是共享服务器。`--flush-session`可以清掉缓存,`--fresh-queries`强制重新发请求。细节决定你能不能全身而退。

标签:

责任编辑:探索