arttnba3's old blog

- arttnba3的垃圾堆积处 -

0%

【CTF题解-0x06】BUUCTF-Reverse write up by arttnba3

0x000.绪论

BUUCTF是一个巨型CTF题库,大致可以类比OIer们的洛谷一样的地方,在BUUCTF上有着分类齐全数量庞大的各方向题目,包括各大CTF的原题

正所谓”不刷BUU非CTFer“(哪里有过这种奇怪的话啦),作为一名新晋的蒟蒻CTFer&网安专业选手,咱也来做一做BUUCTF上的题,并把题解在博客上存档一份方便后来者学习(快醒醒,哪里会有人看你的博客啦XD

Baby Pwner做的都是pwn题,点开即可查看题解

👆在第一篇BUU的题解中我曾经这么说过,但是作为研究二进制安全的新手,同时也作为Baby Pwner,深深地感受到了逆向功底的重要性

为了巩固自己的逆向功底,提高代码审计的功力,今天开始也并行刷一刷Reverse

但愿肝有事,不然岂不是等于一直在划水

0x001.easyre

拖入IDA中就有flag了

image.png

1
flag{this_Is_a_EaSyRe}

0x002.reverse1

拖入IDA进行分析

存在一个可疑的用括号包着的字符串{hello_world}

image.png

同时我们可以发现程序会把该字符串中的'o'替换成'0'

image.png

故得flag

1
flag{hell0_w0rld}

0x003.reverse2

拖入IDA进行分析

有个可疑字符串{hacking_for_fun}

image.png

main函数中会进行置换,将ir都换成1

image.png

故得flag

1
flag{hack1ng_fo1_fun}

0x004.内涵的软件

拖入IDA就有flag

image.png

需要注意的是把DBAPP换成flag

1
flag{49d3c93df25caad81232130f3d2ebfad}

0x005.新年快乐 - UPX

惯例的拖入IDA,发现啥都没有,推测是加了壳

image.png

脱壳以后就可以在IDA中直接得到flag了

image.png

image.png

1
flag{HappyNewYear!}

0x006.[BJDCTF 2nd]guessgame

拖入IDA中就有flag了

image.png

1
flag{S1mple_ReV3r5e_W1th_0D_0r_IDA}

0x007.helloworld

拖入jadx中就有flag了

image.png

1
flag{7631a988259a00816deda84afb29430a}

0x008.xor - 异或

拖入IDA进行分析,发现储存了异或加密后的flag

image.png

写个脚本解密即可

1
2
3
flag = b'f\nk\fw&O.@\x11x\rZ;U\x11p\x19F\x1Fv\"M#D\x0Eg\x06h\x0FG2O'
for i in range(1,33):
print(chr(flag[i] ^ flag[i-1]),end = '')

image.png

1
flag{QianQiuWanDai_YiTongJiangHu}

0x009.reverse3 - base64

拖入IDA进行分析

这个是加密函数

image.png

存在base64码表,推测应该是base64

image.png

base64加密后还有一个简单的赋值操作

故构造解密脚本如下:

1
2
3
4
5
6
from base64 import *
ciphertext = 'e3nifIH9b_C@n@dH'
flag = ''
for i in range(len(ciphertext)):
flag += chr(ord(ciphertext[i])-i)
print(b64decode(flag))

得到flag

image.png

1
flag{i_l0ve_you}

0x00A.不一样的flag

拖入IDA进行分析

得到flag

1
flag{222441144222}

Welcome to my other publishing channels