php注入工具
sqlmap 跑一条 先说 sqlmap。入工它算这个领域的入工老大哥,支持 MySQL、入工PostgreSQL、入工MSSQL、入工Oracle 等一大堆数据库,入工PHP 环境下最常碰到的入工 MySQL 和 MariaDB 它处理得最顺手。我印象比较深的入工一次,目标站有个 它自动识别出是布尔盲注,然后开始二分法猜数据库名。速度不算快,但胜在稳。不过 sqlmap 有个毛病,遇到 WAF 的时候默认的 payload 经常被拦,得手动调 另一个工具是 jSQL Injection,Java 写的,图形界面,适合不想记命令的人。它的优势是可视化,注入点、数据库结构、表数据都能点着看。但说实话,跑大批量目标的时候还是 sqlmap 更顺手,jSQL 更适合单点突破或者教学演示。 还有一类是专门针对 PHP 特性的工具,比如 注入工具的核心逻辑其实就三步:判断注入类型、提取数据、扩大战果。判断类型靠的是发不同 payload 看回显差异——报错型看错误信息,布尔型看页面真假,时间型看响应延迟。提取数据就是猜,盲注下猜字符、猜表名、猜字段,union 注入下直接 实际用的时候,工具只是辅助。我见过太多人拿着 sqlmap 对着一个站狂扫,结果连注入点都没找对。手工测注入点还是基础:单引号、双引号、反斜杠、数字型加 工具再好用,也绕不开一个事实:注入能成功,根子还是在代码。 最后提一句,sqlmap 的 --os-shell 出来,入工服务器直接弹回一个交互式 Shell,入工整个过程不到三分钟。入工这就是入工 PHP 注入工具最直接的“战果”。很多人以为注入工具就是入工拿个扫描器对着 URL 一顿怼,其实真正干活的入工那几个,设计思路差别挺大。入工id=1 的查询参数,手工测的时候加个单引号返回 500,加 and 1=1 正常,and 1=2 又 500。这种布尔盲注手工跑太费时间,直接丢给 sqlmap:sqlmap -u "http://target.com/news.php?id=1" --batch --dbs--tamper 脚本,比如 space2comment 或者 between,把空格换成注释、把等号换成 between,绕过的成功率会高不少。phpMyAdmin 的漏洞利用脚本。phpMyAdmin 本身不是注入工具,但它历史上出过不少 SQL 注入漏洞,比如 CVE-2018-12613 那个 LFI 加注入的组合拳,配合 SELECT ... INTO OUTFILE 直接写 WebShell。这种就不是通用工具能覆盖的了,得针对具体版本写 EXP。union select 把数据带出来。扩大战果最常见的就是读文件、写文件、执行命令。MySQL 里 load_file() 读 /etc/passwd,into outfile 写一句话木马,前提是 secure_file_priv 没限制、目录有写权限。这些条件现在越来越难满足,所以工具也在进化,比如 sqlmap 的 --os-shell 会尝试多种提权路径。and 1=1、字符型加 ' and '1'='1,看页面变化。找到疑似点再上工具,效率高得多。另外,PHP 的 magic_quotes_gpc 在 5.4 之后移除了,但很多老站还在用 addslashes 过滤,这种过滤对数字型注入基本没用,因为数字型不需要引号闭合。mysql_query("SELECT * FROM users WHERE id=" . $_GET['id']) 这种写法,工具不来找你,手工也能进。PDO 预处理或者 mysqli 的 prepare 用上,注入点直接消失。所以搞渗透的拿工具测站,搞开发的拿工具自查,两边用的其实是同一套东西,只是目的不同。--risk 和 --level 别随便拉满。--risk=3 会加 OR 型的 payload,容易把数据库搞挂;--level=5 会测 Cookie、User-Agent 这些头,请求量翻好几倍。生产环境测试,--level=2 --risk=1 先跑一遍,确认有注入了再逐步加码。工具是死的,判断是活的。
-
上一篇
-
下一篇