php代码审计(三)bluecms练习
BlueCMS v1.6 sp1 ad_js.php SQL注入漏洞
环境搭建
源码下载:https://jwt1399.lanzoui.com/inPwSde6c5a
将upload下的文件移动到网站根目录下
访问/install
,安装程序,配置基本信息
seay自动审计
定位到第一条的位置/ad_js.php
全代码通读,首先是包含了文件/include/common.inc.php
,查看该文件
发现这个由用户输入的变量被做了处理,使用了get_magic_quotes_gpc()
,这个函数是对魔术引号自动过滤,自动在GET、POST、COOKIE变量中单引号、双引号、反斜杠、空字符前面加上反斜杠,确保数据不会引起程序出现安全错误。如果没有开启gpc,则使用deep_addslashes()进行过滤,定位该函数
该函数首先检查字符串是否为数组,如果是的话,则遍历里面的值使用递归再过滤一次,如果是字符串则使用addslashes
函数
addslashes() 函数返回在预定义字符之前添加反斜杠的字符串。
预定义字符是:
- 单引号(')
- 双引号(")
- 反斜杠(\)
- NULL
提示:该函数可用于为存储在数据库中的字符串以及数据库查询语句准备字符串。
注释:默认地,PHP 对所有的 GET、POST 和 COOKIE 数据自动运行 addslashes()。所以您不应对已转义过的字符串使用 addslashes(),因为这样会导致双层转义。遇到这种情况时可以使用函数 get_magic_quotes_gpc() 进行检测。
回到/ad_js.php
,$ad_id
是可以由用户进行输入,对输入的参数进行了去除首尾空白字符处理
trim — 去除字符串首尾处的空白字符(或者其他字符)
此函数返回字符串 string 去除首尾空白字符后的结果。如果不指定第二个参数,trim() 将去除这些字符:
- " " (ASCII 32 (0x20)),普通空格符。
- "\t" (ASCII 9 (0
x09)),制表
符。``- "\n" (ASCII 10 (0x0A)),换行符。
- "\r" (ASCII 13 (0x0D)),回车符。
- "\0" (ASCII 0 (0x00)),空字节符。
- "\v" (ASCII 11 (0x0B)),垂直制表符。
POC
/ad_js?ad_id=1 union select 1,2,3,4,5,6,group_concat(admin_name,0x3a,pwd) from blue_admin
修复
将输入的数据强制转换为整形
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义