休闲

怎么用sqlmap

时间:2010-12-5 17:23:32  作者:百科   来源:探索  查看:  评论:0
内容摘要:sqlmap这玩意儿,说白了就是SQL注入漏洞的自动化检测和利用工具。你手工测试一个注入点可能要折腾半小时,它几秒钟就能把数据库给你翻个底朝天。我见过太多人拿它当黑客神器,其实它就是个安全测试员的瑞士

sqlmap这玩意儿,说白了就是SQL注入漏洞的自动化检测和利用工具。你手工测试一个注入点可能要折腾半小时,它几秒钟就能把数据库给你翻个底朝天。我见过太多人拿它当黑客神器,其实它就是个安全测试员的瑞士军刀。

装好sqlmap之后,最基础的用法就一句话:python sqlmap.py -u "http://example.com/page.php?id=1"。它会自动探测这个URL参数存不存在注入点。第一次跑的时候会问一堆问题,比如是否要测试其他参数、是否要尝试布尔盲注之类,新手容易懵。我的建议是——看到提示直接按回车用默认值,先跑通再说。默认选项覆盖了绝大多数常规场景。

一旦确认有注入,下一步就是掏数据库。用--dbs列出所有数据库名,-D 数据库名 --tables看表名,-D 数据库名 -T 表名 --columns查字段,最后--dump直接拉数据。这一连串操作下来,网站后台的账号密码、用户隐私全在你面前了。我去年帮一家电商做渗透测试,就靠这条命令链,五分钟之内把他们的会员表拖了出来——还好我是白帽子,不然那几万条手机号就真出事了。

不过sqlmap不是万能的。有些网站做了WAF(Web应用防火墙),你一把payload丢过去,它直接给你返回403甚至封IP。这时候就得换思路,sqlmap有个--tamper参数,可以加载脚本绕过WAF检测。比如--tamper=space2comment把空格替换成注释符,--tamper=base64encode把payload编码一下。但别指望一个tamper通吃所有WAF,这玩意儿就是个猫鼠游戏,你得根据报错信息慢慢试。

还有个坑是POST请求。别以为只有URL参数才危险,登录框、搜索框这些表单提交的地方才是重灾区。用--data="username=admin&password=123"指定POST数据就行。再进阶一点,碰到需要登录才能访问的页面,用--cookie="PHPSESSID=xxxx"带上会话标识。我曾经在测试一个后台管理系统时,直接带cookie注入,绕过了登录验证,把管理员密码哈希都拖出来了——不过那系统本身连验证码都没有,纯属自己作死。

最后说点个人看法。sqlmap确实强大,但用多了你会发现,真正难的从来不是工具本身,而是判断注入点在哪、怎么绕过防护、怎么在拖数据时不被发现。工具只是加速器,脑子里得有SQL注入的原理。你要是连union select是干嘛的都不知道,就算sqlmap把数据库拖出来,你也看不懂哪些数据值钱。

顺手提一句,sqlmap也支持直接连数据库跑,-d "mysql://root:password@127.0.0.1:3306/database"。但这种情况通常是你已经拿到数据库权限了,再用sqlmap有点脱裤子放屁——直接命令行操作不更痛快?工具用在该用的地方,别本末倒置。

最近更新
热门排行
copyright © 2026 powered by 力不从心网   sitemap