36D杯 部分题目WriteUp

这比赛什么鬼名字...

目录
  • Reverse
    • 逆向_签到
    • 逆向_神光
  • Misc
    • 杂项_签到
    • 杂项_暗中观察
  • 没有做出的题
  • 参考

比赛网站:https://ctf.show/challenges

Reverse

逆向_签到

IDA64打开,按F5。
36D杯 部分题目WriteUp_第1张图片

看标箭头的几处,得知v6要等于0才正确。v6的运算是和后面的一串式子进行按位或,而0或0才能得到0,所以后面的一串异或式子的结果为0,那么因为异或的可逆运算,可以计算出v8。
脚本:

list=[102,109,99,98,127,58,85,106,57,82,122,55,81,19,51,35,67,70,41,61,41,32,127,28,38,77,49,20,80,94,-24,]
v6=0
v7=0
v8=0
l=len(list)
for i in range(l):
    # v8=v6
    # v6 |= v8^i^(i+(i^list[i]))
    v8 = 0^i^(i+(i^list[i]))
    print((chr(v8)),end='')

逆向_神光

运行一下发现有字符串"key",IDA打开,Alt+T搜索"key",找到主函数,按F5
36D杯 部分题目WriteUp_第2张图片

进入sub_4113B1
36D杯 部分题目WriteUp_第3张图片

写脚本得到Str2的值
36D杯 部分题目WriteUp_第4张图片

回到主函数,通过if判断得知需要让Str1与Str2相等,那么Str2就是key
36D杯 部分题目WriteUp_第5张图片

运行程序,输入key:"wangzherongyao"
36D杯 部分题目WriteUp_第6张图片

36D杯 部分题目WriteUp_第7张图片

可以验证key正确了。回到主函数,进入sub_4113CF,对sub_415770反汇编时报错
36D杯 部分题目WriteUp_第8张图片

到IDA汇编窗口,Alt+T搜索报错的415890,并Options→General→勾选Stack Pointer,发现415890这一行的sp值为负,所以报错
36D杯 部分题目WriteUp_第9张图片

我选中add esp,15D8h这行指令,Edit→Patch program→Assemble,修改为nop空指令
36D杯 部分题目WriteUp_第10张图片

然后再ALt+K一顿瞎改最后几行call、push等的sp,使得retn处的sp变回0,这样就可以F5了
36D杯 部分题目WriteUp_第11张图片

成功反编译sub_415770,发现里面有俩循环,然后再由sub_4113E3继续处理dword_41A038,但是其中用于异或的dword_41A4DC的值我们却不知道
36D杯 部分题目WriteUp_第12张图片

我想不出来怎么得到它的值,想想也许用od跑一下能在寄存器里找到它的值(但我不太会用od)
然后od打开,先一个劲点直直向下和三个点的按钮,直到出现输入key的提示,然后输入"wangzherongyao",结果flag就这么出现了...
36D杯 部分题目WriteUp_第13张图片

Misc

杂项_签到

加qq群看群公告就能得到flag。

杂项_暗中观察

第一次做流量分析题。下载下来用010editor查看文件头,知道是一个.pacp文件,用wireshark打开,Ctrl+F搜索字符串flag,发现有个flag.zip。
选中这一条,文件→导出对象→HTTP,将flag.zip存下来。
36D杯 部分题目WriteUp_第14张图片

发现需要解压密码。回到wireshark,过滤http协议,查看第一条POST,试试里面的几个值,试出了正确的解压密码为ctfshowys168com
36D杯 部分题目WriteUp_第15张图片

解压完成,flag就在里面的文本文件中。

没有做出的题

密码_签到,一开始我只想是恺撒,而且只能加密解密字母,一度陷入窘境,后来高中同学来我家玩,给他看题,他问rot是什么意思并查了一下,然后我才知道rot47可以对数字和字符加密...网上有在线解密,也可以自己写脚本,要注意模126循环,字符ascii码范围是33-126。第一步解完之后提示看电脑键盘,我知道的有:画出字母形状;qwer替换加密;虚拟键盘码(高中同学告诉我的,基本跟ascii码一样),我们试了一下午,拼音,摩尔斯码,数字代替符号,异或表示分隔...总之一无所获。去群里问了一下wp终于懂了...确实是用键盘的数字代替符号,然后还有一步是16进制转字符...这地方没有敏感起来。
杂项_42,看完wp我感到了人性险恶...杂项我先试了试jojo的奇妙冒险,发现解不开压缩包,爆破不行,也不是伪加密。42这道题我看16进制感觉是多个伪加密(还是不太懂原理),最后看wp原来题目名就是解压密码...如果我试试爆破也轻松爆出来了。而其实解压是错误的解题路线,我正是由于jojo的那道题以及预览到压缩包里的多个文件才深信解压它是正确路线,其实只需要binwalk一下,dd提取出来一张png,stegsolve点点就能得到答案...
WEB_ALL_INFO_U_WANT,web我不会,一开始我电脑录屏然后减速倒放来还原魔方,后来找了我会解三阶魔方的同学来帮我做...不过解到一个阶段网页就不允许对魔方进行操作了,我没有web知识,只是为这题去玩具店买了个魔方玩...
杂项_RunTheEXE,赛后看大佬wp学到新工具,StudyPE,打开文件,在导入一栏中删除报错的.dll,另存文件,再运行即可得到flag。
杂项_ez-qrcode,看着原题wp搞了一天没弄出来,wp贴在下面吧...

参考

流量分析-CTF题目实战
CTF-流量分析总结
https://yous.be/2014/12/07/seccon-ctf-2014-qr-easy-write-up/
CTF中RSA题型解题思路及技巧,附小白福利

你可能感兴趣的:(36D杯 部分题目WriteUp)