kali中sqlmap使用教程
sqlmap是用教kali里最锋利的SQL注入检测工具,没有之一。用教别被它那一长串参数吓到,用教核心用法就那几个。用教我见过太多人把时间浪费在翻帮助文档上,用教却连最基本的用教注入检测都没跑明白。
第一步:确认目标
打开终端,用教先别急着敲命令。用教你得有个带参数的用教URL,比如http://example.com/product.php?用教id=1。没有真实目标的用教话,用dvwa(Damn Vulnerable Web Application)练手最合适——本地搭一个,用教随便打。用教
检测注入点的用教命令简单到离谱:
sqlmap -u "http://example.com/product.php?id=1" 就这么一行。sqlmap会自己发请求,用教判断参数是否可注入,顺便识别数据库类型。第一次跑会问你一堆问题,比如是否继续测试其他参数、是否使用默认的检测级别。直接回车选默认就行,别磨叽。
第二步:拿数据
确认有注入点后,事情就变得无聊了——因为太简单。列出所有数据库:
sqlmap -u "http://example.com/product.php?id=1" --dbs 看到数据库名后,挑一个顺眼的,比如webapp,列出它的表:
sqlmap -u "http://example.com/product.php?id=1" -D webapp --tables 表名通常会暴露一切。users、admin、session——看到这种名字,你心里就该有数了。直接dump出users表的内容:
sqlmap -u "http://example.com/product.php?id=1" -D webapp -T users --dump 密码字段多半是哈希过的,别慌。sqlmap会尝试用自带的字典破解弱口令,跑不出来就复制哈希去cmd5.com查,八成能撞上。
第三步:绕过防护
现实中的网站没那么乖。加了WAF(Web应用防火墙)的站点,直接跑上面的命令大概率被拦截。这时候得加个--tamper参数,用脚本混淆请求。
sqlmap -u "http://example.com/product.php?id=1" --tamper=space2comment --dbs space2comment会把空格替换成注释符/**/,很多WAF看到这种畸形请求就懵了。kali里自带几十个tamper脚本,--list-tampers能全列出来。我的经验是:先试space2comment,不行就between,再不行就组合着用。别贪多,一次挂五六个脚本反而容易把请求搞坏。
还有个常见坑——目标返回慢或者请求超时。加个--timeout=30和--retries=2,别让sqlmap傻等。
第四步:交互式shell
如果注入点是--os-shell能利用的类型(比如堆叠注入),你可以直接拿到操作系统的shell:
sqlmap -u "http://example.com/product.php?id=1" --os-shell 这时候你就能执行系统命令了。不过说实话,实战中能走到这步的场景不多,多数时候dump完数据就够你写报告了。
收尾的提醒
sqlmap是工具,不是魔法。它跑不出结果的时候,别死磕参数,换个思路——先手工测一下注入点是否存在,用curl发几个试探性的请求。如果手工都测不出来,sqlmap大概率也白搭。
另外,--batch参数可以跳过所有交互提示,适合写脚本批量扫。但新手慎用,因为你会看不到关键信息。
最后说句实在话:sqlmap跑得再欢,也别忘了你是在测试别人的系统。拿到授权再动手,这行当里翻车的,十有八九是栽在“我以为没关系”上。