第三届陕西省大学生网络安全技能大赛部分WriteUp

Geek精神战队 WriteUp(撰写完成后导出为pdf文件提交至平台)

这次的CTF题目还是有点难度的,也没有拿到特别好的成绩(最后半小时被冲烂了),此WP仅供学习参考,大佬勿喷。

排名

战队名称:第27名

解题思路

WEB

EzRCE
代码语言:php
复制
<?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感觉快出来了,通过使用脚本来进行循环请求

代码语言:python
代码运行次数:0
复制
Cloud Studio 代码运行
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 &#39;hacker&#39; not in txt:
    print(txt[0])</code></pre></div></div><figure class=""><div class="rno-markdown-img-url" style="text-align:center"><div class="rno-markdown-img-url-inner" style="width:auto"><div style="width:100%"><img src="https://cdn.static.attains.cn/app/developer-bbs/upload/1722847591038451658.png" /></div></div></div></figure><p>脚本得到pass:password是富强民主文明和谐自由平等公正法制爱国敬业诚信友善</p><p>直接去拼接URL得到flag</p><figure class=""><div class="rno-markdown-img-url" style="text-align:center"><div class="rno-markdown-img-url-inner" style="width:auto"><div style="width:100%"><img src="https://cdn.static.attains.cn/app/developer-bbs/upload/1722847591340420851.png" /></div></div></div></figure><h4 id="a97vb" name="MICS">MICS</h4><h5 id="cq84r" name="%E4%BA%91%E7%BC%A8">云缨</h5><p>拿到题目,<strong>云缨</strong>,考虑到了谐音,且题目要求答案进行md5加密作为flag,说明答案是比较简单的,优先考虑云影解密</p><p>8881088410842088810810842042108108821041010882108881</p><p>直接解出YUNYINGISEASY</p><p>MD5加密后即为flag{9edabf1448871181eb0e7133b5b3d701}</p><figure class=""><div class="rno-markdown-img-url" style="text-align:center"><div class="rno-markdown-img-url-inner" style="width:auto"><div style="width:100%"><img src="https://cdn.static.attains.cn/app/developer-bbs/upload/1722847591605971896.png" /></div></div></div></figure><p><strong>hack_dns</strong></p><p>首先给了压缩包,也不是伪加密,尝试暴力破解,直接上最简单的1-6位纯数字,直接爆出来密码</p><figure class=""><div class="rno-markdown-img-url" style="text-align:center"><div class="rno-markdown-img-url-inner" style="width:auto"><div style="width:100%"><img src="https://cdn.static.attains.cn/app/developer-bbs/upload/1722847591945641774.png" /></div></div></div></figure><p>解压之后直接分析压缩包,根据题目提示dns,直接过滤dns流量,发现解析的域名的三级域名很可疑,使用tshark导出</p><p>tshark -r flag.pcap -T fields -e dns.qry.name dns.flags.response==0 &gt; output.txt</p><figure class=""><div class="rno-markdown-img-url" style="text-align:center"><div class="rno-markdown-img-url-inner" style="width:auto"><div style="width:100%"><img src="https://cdn.static.attains.cn/app/developer-bbs/upload/1722847592206959298.png" /></div></div></div></figure><p>去重后得到字符串:640a0a780a0a680a0a790a0a7b0a0a366a0a0a0a0a650a300a0a630a0a6d0a0a310a0a6c0a0a360a0a780a0a380a0a390a0a370a0a300a0a330a0a330a0a690a0a670a0a300a0a610a0a310a0a720a0a680a0a340a0a300a0a390a0a310a0a350a0a760a0a360a0a350a0a390a0a7d0a0a</p><p>十六进制转字符串得到:</p><p>dxhy{6je0cm1l6x897033ig0a1rh40915v659}</p><p>先考虑维吉尼亚看看,附件还给了图片,盲猜key是图片隐写,上steghide 默认密码解出key,进行维吉尼亚解密得到flag</p><figure class=""><div class="rno-markdown-img-url" style="text-align:center"><div class="rno-markdown-img-url-inner" style="width:auto"><div style="width:100%"><img src="https://cdn.static.attains.cn/app/developer-bbs/upload/1722847592473417589.png" /></div></div></div></figure><figure class=""><div class="rno-markdown-img-url" style="text-align:center"><div class="rno-markdown-img-url-inner" style="width:auto"><div style="width:100%"><img src="https://cdn.static.attains.cn/app/developer-bbs/upload/1722847592791821831.png" /></div></div></div></figure><h4 id="cof8p" name="REVERSE">REVERSE</h4><h5 id="46kbc" name="ezpython">ezpython</h5><p>使用pyinstxtractor进行反编译,得到pyc文件,补充缺失的Python 3.8 的 Magic Number 文件头后使用在线工具对main.pyc进行反编译得到源码</p><figure class=""><div class="rno-markdown-img-url" style="text-align:center"><div class="rno-markdown-img-url-inner" style="width:auto"><div style="width:100%"><img src="https://cdn.static.attains.cn/app/developer-bbs/upload/1722847593108670434.png" /></div></div></div></figure><p>发现ctr1 += chr(ord(flagi) ^ 5)是个异或,使用工具进行异或即可解出flag</p><p>奖状到啦!!奖状到啦!!奖状到啦!!奖状到啦!!奖状到啦!!奖状到啦!!奖状到啦!!奖状到啦!!奖状到啦!!</p><figure class=""><div class="rno-markdown-img-url" style="text-align:center"><div class="rno-markdown-img-url-inner" style="width:auto"><div style="width:100%"><img src="https://cdn.static.attains.cn/app/developer-bbs/upload/1722847593403564075.png" /></div></div></div></figure>