sqlmap sql注入教程
第一次用sqlmap跑出数据库的入教时候,我盯着屏幕愣了好几秒——原来手工注入折腾半小时的入教活儿,这工具一条命令就搞定了。入教那是入教个挺老的PHP站点,参数没做任何过滤,入教sqlmap -u "http://test.com/news.php?入教id=1" --dbs 回车下去,几秒钟就列出了所有库名。入教说实话有点震撼,入教也有点后怕:要是入教攻击者用这玩意儿扫站,防守方拿什么挡?入教 sqlmap的核心逻辑不复杂。它把SQL注入的入教整个流程自动化了:探测注入点、判断数据库类型、入教猜解字段数、入教提取数据,入教甚至能直接拿shell。入教你不需要懂每种数据库的语法差异,它内置了MySQL、MSSQL、Oracle、PostgreSQL等主流数据库的指纹识别和利用 payload。这点很关键——手工注入最烦的就是换个数据库就得重新调 payload,sqlmap把这层脏活全包了。 装它很简单。Kali 自带,其他系统 pip install sqlmap 或者直接 git clone 源码跑。我习惯用源码版,更新快,遇到问题看代码也方便。依赖主要是 Python,现在主流是 Python3 版本,老教程里 Python2 的写法有些已经跑不通了。 基础用法就一条 -u 参数。比如 拿到注入点之后,--dbs 列数据库,--current-db 看当前库,-D 库名 --tables 列表,-T 表名 --columns 看字段,最后 --dump 把数据拖出来。这一套流程走下来,如果网络通畅、目标没防护,十分钟内能拿到管理员账号密码。有次帮朋友做授权测试,从发现注入点到 dump 出用户表,总共花了不到三分钟。当然那是理想情况,真实环境里经常遇到各种拦路虎。 POST 注入要用 --data 参数。比如登录框那种, 遇到需要登录才能访问的页面,--auth-type 和 --auth-cred 能处理 Basic 认证。更复杂的情况用 --load-cookies 直接从浏览器导出的 cookies 文件加载。有回测试一个后台,登录后 token 放在 header 里,最后是用 --headers 手动加进去才跑通的。sqlmap 的灵活性就在这里,几乎你能想到的 HTTP 请求细节它都留了接口。 提速方面,--threads 可以开多线程,默认是 1。但别开太大,很多站点会封并发。--delay 设置每个请求之间的间隔,配合 --safe-url 和 --safe-freq 能降低被 ban 的概率。我一般 threads 开到 5 左右,delay 设 0.5 秒,平衡速度和隐蔽性。真要快,--technique 指定注入技术,比如只测布尔盲注用 B,只测时间盲注用 T,能省不少时间。 拿 shell 的功能得看权限。--os-shell 在数据库用户有 FILE 权限且 secure_file_priv 没限制时能执行系统命令。MySQL 下还可以 --file-write 和 --file-dest 上传文件。不过这些操作动静大,实战中很少用,除非是授权渗透且明确允许。我见过有人拿 sqlmap 的 --os-pwn 直接弹 meterpreter,那是配合 Metasploit 用的,属于后渗透阶段了。 防守方怎么看 sqlmap?其实它的流量特征挺明显的。User-Agent 默认带 sqlmap 字样,改掉就行。但 payload 里的 SQL 关键字、频繁的报错请求、时间盲注那种固定延迟,这些行为模式很难完全伪装。WAF 规则调得好,能拦下大部分默认配置的扫描。所以真搞渗透测试,sqlmap 只是起点,后面还得手工调 payload 或者换更隐蔽的工具。 最后说个坑。有次对某站跑 sqlmap,跑了一半数据库突然连不上了,以为是封 IP,换代理接着跑还是不行。后来发现是目标站点的数据库连接数被跑满了,把人家生产环境搞挂了。这事让我记到现在:扫描前一定确认授权范围,控制并发,别把测试变成事故。sqlmap -u "http://target.com/page.php?id=1",它会自动测试这个 id 参数是否存在注入。跑起来之后它会问你要不要跳过其他类型的测试,一般选默认就行。如果站点有 WAF,它还会提示你检测到了防护,这时候得加 --tamper 脚本去绕过。我试过对某云 WAF 用 space2comment 脚本,确实能过,但速度会慢不少。sqlmap -u "http://target.com/login.php" --data="user=admin&pass=123"。如果请求里有 Cookie 或者需要带 Referer,用 --cookie 和 --referer 加上。有时候还得指定 --level 和 --risk,默认是 1 和 1,调高了会测更多 payload 但容易被封 IP。我一般先默认跑,跑不出来再慢慢加。
-
上一篇
-
下一篇
- 最近发表
- 随机阅读
- 搜索
-
- 友情链接
-