新手【BUUCTF】逆向writeup()
0x00前言
在大三开始入门逆向,已学完小甲鱼解密篇,刚开始看《加密与解密》,现在沉浸在快 乐的刷题学习中.....
0x01刚接触的逆向题
reverse1
首先拿道题第一步先查壳,我用的查壳工具是peid和exeinfope

发现可以直接打开,双击运行,发现报错

用IDApro64位打开,使用main函数定位法

找到main函数

按F5反汇编成c语言代码

可以看到比较函数,因此答案可能在str2里面,双击查看str2的位置,找到flag

找到flag

reverse_2
拿到文件发现没有格式

用IDApro打开,先用main函数定位+F5

看到flag变量,直接双击

发现看到flag字符

提交后发现不对,然后注意到上面的的运算过程,当flag+i地址的值为105或者114时,将其变成49,查阅ASCII码表得到,105是i,114是r,49是1,所以该代码的作用是将flag里面的字符串中的i和r修改为1。所以最后的flag为{hack1ng_fo1_fun}

内涵的软件
打开程序,显示的内容貌似没什么用

然后查壳,发现是32位PE文件,无壳

接着用32位IDA打开,上来就看到这一串,根据题目“内涵的软件”,发现{}内的就是flag

新年快乐
拿到文件先查壳,发现是upx壳,但是因为我还没学过手动脱壳,所以下了一个万能脱壳工具


一键脱壳后,用IDApro打开

发现代码逻辑比较简单,flag就是HappyNewYear!

XOR
拿到题后,先用IDA打开,找到main函数,发现关键在global变量

同时注意到flag长度应该为33位,而且用的是异或变换输入得到flag

查看global变量,一数正好是33位

编写脚本


reverse3
先查壳,32位无壳

打开IDA,用main函数定位法

发现代码对输入首先做了一个类似加长,随后对每个字符进行了变换(s[i]+=i)

查找str2的值,并编写脚本


发现类似加长编码的操作时base64变换

于是将逆运算的字符串使用在线base64解码工具解码,得到flag

浙公网安备 33010602011771号