kali sqlmap使用教程
sqlmap是使用个好东西,但很多人把它当核弹用——对着URL一通乱扫,教程结果啥也没捞着,使用反被WAF封了IP。教程我见过太多人卡在这步,使用其实问题不在工具,教程在于你根本没搞懂它的使用脾气。
先装好它。教程Kali里自带,使用但版本可能旧了。教程终端跑一句sudo apt update && sudo apt install sqlmap,使用完事。教程别嫌麻烦,使用新版对某些数据库的教程检测更准,旧版连MySQL 8的使用认证插件都认不全。
最基础的用法,直接怼URL:
sqlmap -u "http://target.com/page.php?id=1"
这条命令会先测注入点,再爆数据库。但记住,如果目标站有CDN或云防火墙,大概率直接超时。这时候你得加--random-agent换个浏览器指纹,再配上--delay 2把请求间隔拉到2秒,像蜗牛一样爬,反而能活下来。
真正拉开差距的是参数组合。比如你想拿数据,别一上来就--dump-all,那会拖垮目标服务器,也容易触发告警。先摸清库名:
sqlmap -u "http://target.com/page.php?id=1" --dbs
看到库名后,挑个看着顺眼的,比如webapp_db,然后-D webapp_db --tables列出表。这时候你可能会发现一堆users、logs之类的表,别贪心,只挑有用的。拿用户表举例:
sqlmap -u "http://target.com/page.php?id=1" -D webapp_db -T users --dump
这命令会直接导出表内容,密码哈希、邮箱、手机号全在里面。但注意,如果表里有几十万行数据,终端会刷屏刷到你手麻,建议加--batch让它自动选“是”,再配合--output-dir=/home/kali/results把结果存成文件,回头慢慢翻。
有个坑必须提:sqlmap默认用UNION查询或布尔盲注,但很多站点的参数是POST提交的。比如登录框,数据是username=admin&password=123,你得用-r加请求包文件。具体操作:先用Burp抓包,把请求保存成login.txt,然后:
sqlmap -r login.txt -p username
-p指定测试哪个参数,别让它瞎猜。我见过有人不指定,结果sqlmap把每个参数都测一遍,花了半小时,最后发现漏洞就在username上——早指定早收工。
再聊点实战技巧。如果你遇到的是登录后的页面,比如http://target.com/dashboard.php?id=2,直接测肯定被302踢回登录页。这时候带上Cookie:
sqlmap -u "http://target.com/dashboard.php?id=2" --cookie="PHPSESSID=abc123; security_level=0"
Cookie从浏览器开发者工具里复制,格式别错,分号加空格。还有更骚的操作,用--level=3 --risk=2提升检测深度,能挖出某些奇葩参数里的注入,但代价是请求数量翻几倍,目标服务器扛不住的话,你可能会把人家打挂——别问我怎么知道的。
最后提醒一句,sqlmap不是万能的。有些站点用了参数化查询,你拿它扫一天也白搭。这时候得靠手工测,或者换个思路,用--sqlmap-shell进入交互模式,直接跑SQL语句。比如sqlmap-shell> load_file('/etc/passwd'),能读文件的话,说明权限够大,后续提权就有戏了。
工具是死的,人是活的。多花时间理解目标站的架构,比盲目扫一百个URL有用得多。我见过一个朋友,用sqlmap五分钟搞定一个站,原因是他先查了对方用的CMS版本,知道有已知漏洞,直接套用--technique=BEUST组合拳,精准打击。这才是玩工具的姿势。
别把sqlmap当傻瓜相机,它更像一把瑞士军刀——功能多,但得知道什么时候该用哪一刀。

喜欢
讨厌