"PHP注入漏洞利用方法及管理表与字段查找"
在网络安全中,PHP注入是一种常见的攻击手段,它允许攻击者通过输入恶意的PHP代码来操纵数据库查询,从而获取敏感信息或执行非法操作。在这个场景中,攻击者已经发现了一个PHP注入点,目标是找出可能的管理表和字段,以便进一步渗透。
注入点URL为:http://www.yjzzx.net/web/xx_text.php?news_id=1763。通过这个URL,攻击者可以尝试构造SQL语句来进行信息探测。已知的信息包括数据库版本(5.0.77-community-nt)、数据库名(yjzx_db)以及当前数据库用户(root@localhost)。
攻击者使用了以下SQL联合查询来获取所有表的名称:
```
http://www.yjzzx.net/web/xx_text.php?news_id=1763+and+1=2+union+select+1,concat(group_concat(distinct+table_name)),3,4,5,6,7,8+from+information_schema.tables+where+table_schema=0x796A7A785F6462
```
这个查询从`information_schema.tables`系统表中聚合并返回了不同的表名,其中`0x796A7A785F6462`是十六进制编码的“yjzx_db”。通过分析返回的表名,如`tpl_system`和`tpl_news`,攻击者推测这些可能是管理相关的表。
接着,攻击者试图查询`tpl_system`表的列名,但没有成功。这通常意味着可能的访问限制或者错误的表名。正确的查询应如下所示:
```
http://www.yjzzx.net/web/xx_text.php?news_id=1763+and+1=2+union+select+1,concat(group_concat(distinct+column_name)),3,4,5,6,7,8+from+information_schema.columns+where+table_name=0x74706C5F73797374656D
```
这里,`0x74706C5F73797374656D`是`tpl_system`的十六进制表示。如果无法获取列名,可能的原因包括:数据库配置禁止了对`information_schema.columns`的访问,或者表确实不存在。
对于获取Webshell,攻击者提到了一个称为“beach”的方法,但没有具体细节。通常,获取root权限的Webshell涉及上传恶意脚本到服务器,或者利用已知的代码漏洞执行命令。由于这种方法需要网站的物理路径和phpMyAdmin后台访问权限,因此攻击者可能需要更深入地进行侦查,寻找其他漏洞或利用现有注入点。
总结起来,这个场景涉及到的关键知识点包括:
1. PHP注入的利用
2. SQL联合查询技巧
3. MySQL的`information_schema`系统表用于信息探测
4. 管理表和字段的识别
5. Webshell的获取策略
为了更有效地查找管理表和字段,攻击者可以尝试以下步骤:
1. 检查其他可能的表名组合,比如使用`like`操作符或尝试其他可能的前缀。
2. 对每个表进行列名探测,确保正确解码和转义表名。
3. 如果权限允许,尝试从已知的管理表中获取数据,以验证其性质。
4. 学习并应用特定于目标系统的漏洞利用策略,例如,查找已知的代码漏洞或尝试权限升级。
最后,对于获取Webshell,研究目标环境的弱点,例如脆弱的文件上传功能、不安全的配置或可利用的系统命令,是至关重要的。同时,遵守合法的渗透测试规则和法规,以免触犯法律。