首页 > 编程语言 >php代码审计(三)bluecms练习

php代码审计(三)bluecms练习

时间:2024-01-14 15:12:23浏览次数:46  
标签:字符 ad addslashes 练习 bluecms 字符串 php ASCII

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

修复

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

标签:字符,ad,addslashes,练习,bluecms,字符串,php,ASCII
From: https://www.cnblogs.com/Crayon-Blog/p/17963737

相关文章

  • php 判断是否关注公众号
    $openid="客户openid";//$access_token="通过微信接口获取的访问令牌";$access_token=getToken();$url="https://api.weixin.qq.com/cgi-bin/user/info?access_token=".$access_token."&openid=".$openid;......
  • 综合练习6、7
    ......
  • 每日一练 | 华为认证真题练习Day164
    1、当两台BGP邻居协商的HOLDTime参数为0时,则不发送Keeplive报文。A.正确B.错误2、ospf路由协议中,bandwidth-reference命令的单位是mbps。A.正确B.错误3、在OSPF广播或者NBMA网络类型中,ROUTERPRIORITY大的设备不一定会成为DR。A.正确B.错误4、在广播或nbma网络上,并非所有的......
  • hyperf 3.1安装和配置php-zookeeper扩展
    Hyperf提供了分布式系统的外部化配置支持,默认适配了:由携程开源的 ctripcorp/apollo,由 hyperf/config-apollo 组件提供功能支持。阿里云提供的免费配置中心服务 应用配置管理(ACM,ApplicationConfigManager),由 hyperf/config-aliyun-acm 组件提供功能支持。ETCDNac......
  • PHP代码审计(一)代码审计准备
    代码审计环境搭建使用phpstudy搭建wamp环境PHP核心配置几个需要了解的PHP核心配置选项PHP_INI_USER该配置选项可以在用户的PHP脚本或Windows注册表中设置PHP_INI_PERDIR在php.ini/.htaccess/httpd.conf中设置PHP_INI_SYSTEM在php.ini/http.conf中设置PHP_INI_ALL在任......
  • thinkphp 便捷关联简写
    /**   *关联会员表   */   publicfunctionmember(){return$this->hasOne(Member::class,'member_id','member_id');}关联写法/***详情*@paramint$order_id*@returnarray*/publicfunc......
  • 综合练习5
    ......
  • 算法练习题-系列一
    目录柯里化实现柯里化函数柯里化函数作用扁平化[双指针]有序数组合并判断一个字符串是否是回文字符串[字符串]两个版本号version1和version2[字符串]版本号大小比较排序['1.45.0','1.5','6','3.3.3.3.3.3.3']=>['1.5','1.45.0','3.3.3.3.3.3','6']给定两个......
  • 线段树练习
    Ⅰ.差分与前缀和P2184贪婪大陆题意:给定防线长度\(n\)和操作次数\(m\),每次在[\(l\),\(r\)]内布下一种雷,查询区间雷的种类数。分析:用线段的方式表示区间布的雷:如[2,4]内的种类=[1,4]内的起点-[1,2]内的终点P1438无聊的数列题意:区间加等差......
  • 方法练习
    ......