当前位置:首页 > 焦点

kali中sqlmap使用教程

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跑得再欢,也别忘了你是在测试别人的系统。拿到授权再动手,这行当里翻车的,十有八九是栽在“我以为没关系”上。

分享到: