php代码审计(三)bluecms练习

BlueCMS v1.6 sp1 ad_js.php SQL注入漏洞

环境搭建

源码下载:https://jwt1399.lanzoui.com/inPwSde6c5a
将upload下的文件移动到网站根目录下
image.png
访问/install,安装程序,配置基本信息
image.png

seay自动审计

image.png
定位到第一条的位置/ad_js.php
image.png
全代码通读,首先是包含了文件/include/common.inc.php,查看该文件
image.png
发现这个由用户输入的变量被做了处理,使用了get_magic_quotes_gpc(),这个函数是对魔术引号自动过滤,自动在GET、POST、COOKIE变量中单引号、双引号、反斜杠、空字符前面加上反斜杠,确保数据不会引起程序出现安全错误。如果没有开启gpc,则使用deep_addslashes()进行过滤,定位该函数
image.png
image.png
该函数首先检查字符串是否为数组,如果是的话,则遍历里面的值使用递归再过滤一次,如果是字符串则使用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 (0x09)),制表符。``
  • "\n" (ASCII 10 (0x0A)),换行符。
  • "\r" (ASCII 13 (0x0D)),回车符。
  • "\0" (ASCII 0 (0x00)),空字节符。
  • "\v" (ASCII 11 (0x0B)),垂直制表符。

代码将输入的参数放进了数据库查询
image.png
image.png
查询的结果被输出到了注释中
image.png

POC

/ad_js?ad_id=1 union select 1,2,3,4,5,6,group_concat(admin_name,0x3a,pwd) from blue_admin
image.png

修复

将输入的数据强制转换为整形

posted @   crayon's  阅读(41)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示