CTFshow web55

目录

web55

代码分析:

通配符解题:

构造rce

上传脚本

flag:


web55

代码分析:

if(isset($_GET['c'])){
    $c=$_GET['c'];
    if(!preg_match("/\;|[a-z]|\`|\%|\x09|\x26|\>|\

过滤了所有字母,下意识想到用异或运算构造字符,但是法相不太行,最后看了大佬的题解发现是构造rce,或者利用目录特性来做

通配符解题:

/bin/base64 以base64加密输出文件,并且/???/????64可以定位到,所以

payload: /?c=/???/????64 ????.???

 

CTFshow web55_第1张图片 

第二种:

 /usr/bin/bzip2,将文件压缩为文件名.bz2可以使用/???/???/????2 访问到

payload: /?c=/???/???/????2 ????.???

然后访问/flag.php.bz2

下载后打开

CTFshow web55_第2张图片 拿到flag

构造rce

第一步先写一个上传的网页,因为php中会把上传的文件先放到临时文件中,前面XSS有提到,又因为.没被过滤,所以可以上传一个命令文件,使用.执行,临时文件一般放在/tmp/文件,且命名规则为php加5个小写字母加一个可能为大写的字母,可以通过 . /???/????????[@-]]来访问,[@-]]是匹配大写字母用的

上传脚本




    
    
    POST数据包POC



使用脚本向目标网站上传一个1.txt,抓包

修改内容如下,加一个参数用来执行

文件内容为:##/bin/sh调用控制台 +ls

CTFshow web55_第3张图片

 发到重发器上,如果没有结果则再发送一次,因为最后一个字母不一定是大写的,所以要刷概率

CTFshow web55_第4张图片

 结果出来啦

最后使用 cat flag.php,因为我前面给它压缩了变成了flag.php.bz2,所以cat到一堆乱码,就不展示了

flag:

ctfshow{ff85d8ef-05f2-4e62-a314-3e05ce5351df}

 

你可能感兴趣的:(命令执行,渗透测试,CTF,php,开发语言,网络安全,安全,web安全)