sqlmap使用教程
sqlmap是使用渗透测试中绕不过去的工具。别被它花哨的教程ASCII艺术字唬住,核心就一句话:检测并利用SQL注入漏洞。使用今天直接上手,教程从安装到实战,使用讲点干货。教程
安装没什么好说的使用,Kali自带。教程其他系统一条命令:pip install sqlmap。使用装完先跑python sqlmap.py --version确认没报错。教程记住,使用工具本身不产生漏洞,教程它只是使用放大镜。
最基础的教程操作——探测目标。假设你发现某个URL带着参数:http://example.com/product?使用id=1。直接甩给它:
python sqlmap.py -u "http://example.com/product?id=1" --batch --batch参数让它自动选择默认选项,省得交互式提问烦你。跑完它会告诉你是否存在注入点,以及数据库类型。我见过太多人卡在这一步就完事,大错特错。探测只是热身。
确认注入后,下一步是摸清家底。用--dbs列出所有数据库:
python sqlmap.py -u "http://example.com/product?id=1" --dbs 输出会列出information_schema、mysql之类的系统库,以及业务库。挑个看着顺眼的,比如shop_db,接着-D shop_db --tables列出表。这时候你可能会看到users、orders这些敏感表。别急着高兴,继续。
真正的高潮在--dump。直接拖库:
python sqlmap.py -u "http://example.com/product?id=1" -D shop_db -T users --dump 它会尝试破解密码哈希,明文密码直接显示。有一次测试,我拿到一个后台管理员的密文,MD5格式,两秒内就被sqlmap自带的字典跑出来了——密码是“admin123”。这不能怪工具,只能怪开发者懒。
说点进阶的。有些站点做了WAF(Web应用防火墙),直接跑会触发拦截。这时候加--tamper参数,比如--tamper=space2comment,把空格替换成注释符/**/,绕过简单的检测规则。我见过最夸张的一次,目标用了三层WAF,最后靠--random-agent换User-Agent加--delay 1延迟请求才勉强不触发封IP。慢是慢点,但总比被ban强。
还有个实用技巧——--os-shell。如果数据库权限够高(比如root),且支持堆叠查询,可以直接拿到操作系统shell。操作很简单:
python sqlmap.py -u "http://example.com/product?id=1" --os-shell 它会让你选择语言(PHP/ASP等),然后上传一个webshell。成功的话你就站在服务器上了。但别随便用这招,一是动静大,二是容易把目标搞崩——我亲眼见过有人执行了whoami,结果权限不足报错,反而暴露了扫描行为。
最后提个反直觉的坑。sqlmap默认会发送大量测试payload,生产环境容易把数据库搞挂。所以实战中务必加--risk=2 --level=3限制测试深度,默认是1。我习惯先低等级探测,确认存在注入再逐步提升。别一上来就--risk=3,那是自杀式攻击。
工具就这些,真正值钱的是判断力。拿到一个注入点,先想清楚目标是什么——只是想验证漏洞,还是拿数据?前者点到为止,后者才需要深入。sqlmap不会替你思考,它只负责执行。用得好是利器,用不好就是给自己挖坑。
本文地址:http://www.79wt.cn/news/1364b1799846.html
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。