赛后复盘发现感觉自己脑洞还是不够大。。。里面的Web题虽然难度不大但还是学到了一些零零碎碎的知识点
关卡1
给了一个URL,打开后显示需要输入手机号获取验证码,随便打了一个发现发送验证码的接口有Debug信息直接把验证码返回了:
输入验证码后进入网站,就一个十分简陋的网站,有四个直播间页面,都在放TSRC的宣传视频hhh,然后扫接口在点赞的地方找到了一个XXE(赛后复盘的时候站已经关了,放一张当时的截图)
总之当时就是发现可以本地读取文件但是没有回显,而且像上图加载进XML的数据还是会被带进后端查询直播的用户,如图中/sys/kernel/fscaps
的值是1,带进去能够找到用户ID为1的用户所以返回500,如果没找到就返回No such streamer
的消息。又试了几回发现没法加载远程DTD文件,于是当时就放着没管了
赛后看wp学到了一个没见过的操作就是基于XML报错的XXE,https://j7ur8.github.io/WebBook/PHP/报错XXE.html,感觉原理就是把远程加载的东西直接写进了ENTITY里面,但是因为变量解析的原因需要嵌套包含两三层,最终的结果就是把要读取的文件读到了exp字符串里面,然后尝试去包含带有错误字符串的文件产生报错,在报错信息里也就会输出文件的内容。
|
|
通过这种方法,结合proc
就能够读到后端的代码/proc/self/cwd/app.py
,然后发现模块config
,读取config.py
拿到flag。
关卡2
大概是个社工题吧,社工第一题网站里的直播ID:nightbaron042,但因为腾讯总部在深圳所以蒙了个深圳,就过了hhh
关卡3
附件是一个流量包,是一个TCP的流量,追踪了一下数据流很容易发现是ADB Shell的流量,里面对一个名为ctf.misc.step
的apk包进行了备份:
搜索了一番发现利用https://github.com/nelenkov/android-backup-extractor工具可以解密Android Backup文件,于是将二进制数据dump下来,用16进制编辑器敲掉多余的数据后尝试解密,发现要密码:
于是又去流量包里追踪了其他的流,发现后面开了一下ADB Shell,有cat pass
的操作,获得密码:
解压备份数据后得到以下文件:
OpenSSL用私钥解一下key.en可以得到压缩包的密码,得到一个txt,排版后发现是个二维码
|
|
得到033yia8rqea1921ca61/systemlockdown
,拼合一下下载附件的IP地址,得到一个二进制文件,有README:
|
|
由最后的判断条件可知,需要保证最后一个字节key_data
的第一位是1,2-3位和4-5位相等以及最后三位大于0。然后发现在循环中,程序是假设用户一定会输入6位数字的,所以只做了换行符的匹配,因此将第7位改为换行符以外的值也可以过循环,也就是溢出。
遍历了一下0-9字符,发现只有5符合上面的条件,因此最后的结果就是5555555的md5值992e63080ee1e47b99f42b8d64ede953
。
|
|
关卡4
压缩包解压下来是一个残缺的二维码和另一个压缩包,二维码补全之后得到一个URL,下载后又得到一个加密的压缩包call_me.zip
在最开始解压出来的那个压缩包是没有密码的,解压下来是一段音频,用Audition打开一眼就看出是摩斯电码:
解码得到一个手机号19910386797
,也正是call_me.zip的密码,解压拿到下一关的网站地址https://darknet.hacker5t2ohub.com/,也就是这题的flag。
关卡5
这题目也是差一点点就出来了。。。感觉思路还是不够严谨,通过这道题大概最大的收获就是不要有事没事就去想着破解JWT(捂脸)
题目是一个商城,初始有一些货币,但是买的东西都没什么卵用,猜测那个付费咨询有点东西:
摸了一下其他的接口,感觉没什么可控的变量,最后摸到了购买的接口,比赛的时候我一直在试可能是不是int32
溢出,发现就算溢出了也只是报错不会继续执行,于是当时就放弃了,就像下面这样子:
在官方的wp里给出了购买的数量是一个int8
类型的值,而且溢出的也直接是购买数量,而是购买的总金额,总金额是一个int16
,于是溢出就只需要大于32767即可。通过测试最大可购买数量,发现做了限制,最多只能买34个,否则提示库存不足,于是发现购买33个或34个付费咨询,最终的金额为33000或34000,最终金额成功溢出为负值,就购买成功了。(比赛的时候但凡做个购买数量的遍历也不至于做不出来)
站内信获得消息
商品【付费咨询】购买成功,信息如下: 前往微信公众号“腾讯安全应急响应中心”(tsrc_team),回复"T-Star666"获取信息
打开URL需要输入一个密钥,于是登上去这个邮箱找到三条邮件,拿到经过了Hash加密的三段密钥
Key Hashes Part 1: https://pastebin.com/QZ7QBmmd Key Hashes Part 2: https://pastebin.com/TUNVRVvk Key Hashes Part 3: https://pastebin.com/rTqtad96
其实不用全部都解出来,通过Hashcat自带的字典以及CMD5网站可以解出一部分:
把这些零零碎碎的单词丢去搜一下很容易搜到原文:
最后把最后一部分的Hash解一些出来,能够得到文段的结尾部分,把这一段英文完整的截取下来就是下面这一段:
Security is too often merely an illusion, an illusion sometimes made even worse when gullibility, naivete, or ignorance come into play. The world’s most respected scientist of the twentieth century, Albert Einstein, is quoted as saying, “Only two things are infinite, the universe and human stupidity, and I’m not sure about the former.” In the end, social engineering attacks can succeed when people are stupid or, more commonly, simply ignorant about good security practices. With the same attitude as our security-conscious homeowner, many information technology (IT) professionals hold to the misconception that they’ve made their companies largely immune to attack because they’ve deployed standard security products - firewalls, intrusion detection systems, or stronger authentication devices such as time-based tokens or biometric smart cards. Anyone who thinks that security products alone offer true security is settling for. the illusion of security. It’s a case of living in a world of fantasy: They will inevitably, later if not sooner, suffer a security incident.
复制进网站,得到flag:
关卡6
附件是一个Word文档,在Word文档里显示隐藏文字可以读到一截flag,以及拿到一张图片。书签的内容是一个Base32编码,解码后得到175.178.148.197
主要还是对工具用的不熟啊,比赛的时候以为Outguess工具不需要密码,看见输出里没有信息以为这个图片只是放在那好看的。。。输入密码123456,成功解密:
三个部分拼起来就是175.178.148.197/062ycz7s9458b772e91/webs
然后又是个Web题,好像是个简单的SSRF,复现的时候站已经关掉了就没复现