刷题 - BUUCTF(BUUOJ) - REVERSE - DAY3

5 篇文章 0 订阅
1 篇文章 0 订阅

BUUCTF REVERSE

(一)easyre

题目地址

easyre

解题思路

  1. 下载解压得到exe文件,运行后没有特别输出
    easyre

  2. 考虑反汇编,先用ExEinfo PE查看有没有壳
    ExEinfoPE
    没有壳

  3. 用IDA查看,查找所有的字符串(快捷键shift+f12),得到flag
    在这里插入图片描述

工具:ExEinfo PE、IDA

(二)reverse1

题目地址

reverse1

解题思路

  1. 给出压缩包解压得到的可执行文件执行如下,没有get到提示
    reverse1
  2. 先用ExEinfo PE查看有没有壳
    exeinfope
    没有壳
  3. 用IDA查看,先查看所有的string,没有找到flag,但发现提示 this is the right flag!
    IDA1
  4. 进一步双击查看,然后右键选择列出交叉引用
    option

xrefs
5. 进入引用代码进一步分析

在这里插入图片描述
生成pseudocode(伪代码)方便阅读
在这里插入图片描述
pseudocode
6. 伪代码大致内容是先把str2里的字符o换成字符0,输入str1,如果与处理过的str2相等,即为flag。于是双击查看str2,str2为{hello_world},所以str1应该为{hell0_w0rld},得到flag。

工具:ExEinfo PE、IDA

(三)reverse2

题目地址

reverse2

解题思路

  1. 先用ExEinfo PE查看压缩包解压得到的文件,为linux的ELF可执行文件
    elf
  2. 用IDA打开,查看string和伪代码
    string
    pseudocode
  3. 伪代码大致内容为,把flag里的i或者r替换成1,得到的结果为真正的flag。于是双击查看flag的值,切换到16进制模式下观察,得到flag的值,再把i和r替换成1,得到真正的flag。
    flag

工具:ExEinfo PE、IDA

(四)内涵的软件

题目地址

内涵的软件

解题思路

  1. 先用ExEinfo PE查看压缩包解压得到的文件,无壳
    exeinfope2
  2. 用IDA查看,查看所有字符串,看到有一串可疑字符串,尝试发现是flag
    在这里插入图片描述

工具:ExEinfo PE、IDA

(五)新年快乐

题目地址

新年快乐

解题思路

  1. 先用ExEinfo PE查看压缩包解压得到的文件,有壳,UPX
    exeinfope3
  2. 使用UPX去壳
    upx
  3. 用IDA打开,查看字符串,根据提示,这次的字符串并没有花括号,结合题目,怀疑 HappyNewYear! 是flag,尝试,成功。
    在这里插入图片描述

工具:ExEinfo PE、IDA、UPX

工具说明
#UPX命令
upx.exe -d 要脱壳的文件名

(六)xor

题目地址

xor

解题思路

  1. 先用ExEinfo PE查看压缩包解压得到的文件,无壳
    exeinfo

  2. 用IDA打开,查看string和伪代码
    string

pseudocode

  1. 伪代码大致内容为,输入的值__b长度为33,所有的值之间异或得到的最终值与global变量的值相等,所以需要推出__b,先查看global的值’f’,0Ah,‘k’,0Ch,‘w&O.@’,11h,‘x’,0Dh,‘Z;U’,11h,‘p’,19h,‘F’,1Fh,‘v"M#D’,0Eh,‘g’,6,‘h’,0Fh,‘G2O’,0,数字和字符的集合,需要处理一下,最后相互异或得到flag(理论依据:A^B = C , 则由 A^C = B, B^C = A)
    global
global_value = [ 'f',0xA,'k',0xC,'w','&','O','.','@',0x11,'x',0xD,'Z',';','U',0x11,'p',0x19,'F',0x1F,'v','"','M','#','D',0xE,'g',6,'h',0xF,'G','2','O' ]
flag = "f"
global_value_char2int = [ord(i)  if isinstance(i, str) else i for i in global_value]
for i in range(len(global_value_char2int)-1):
    flag += chr(global_value_char2int[i]^global_value_char2int[i+1])
print(flag)

工具:ExEinfo PE、IDA

(七)helloword

题目地址

helloword

解题思路

  1. 用IDA打开得到的apk文件,查看string
    ida
  2. 搜索flag{,得到flag
    flag

工具:IDA

(八)reverse3

题目地址

reverse3

解题思路

  1. 先用ExEinfo PE查看压缩包解压得到的文件,无壳
    exeinfope
  2. 用IDA打开,查看string和伪代码
    在这里插入图片描述
    pseudocode
  3. 从下往上看,如果Destination的值等于Str2的值,等成功,说明flag最后处理的结果为Str2的值,查看Str2的值为e3nifIH9b_C@n@dH,for循环是destination每个字符自增自己的下标,destination来自于v4,v4来自于sub_4110BE,查看sub_4110BE)如下,看到"/3""和*4"想到可能是base64对字符的二进制编码做的处理,加上while和if判断,先尝试一下base64
    sub_4110BE
  4. 编写代码如下,运行得到flag
import base64
str2= "e3nifIH9b_C@n@dH"
flag=""

for i in range(len(str2)):
    flag += chr(ord(str2[i])-i)
print(base64.b64decode(flag))

工具:ExEinfo PE、IDA

(九)不一样的flag

题目地址

不一样的flag

解题思路

  1. 下载解压得到exe文件,运行后出现上下左右指令
    exe

  2. 考虑反汇编,先用ExEinfo PE查看有没有壳
    exeinfope
    没有壳

  3. 用IDA查看,查找所有的字符串,一步步追踪到main函数
    string
    1
    2

  4. 看到v3图形如下,
    *1111
    01000
    01010
    00010
    1111#
    v3

  5. 49是‘1’,35是‘#’,猜测可能是一个迷宫。0为通路,1为错路,#为最终出路,*为起点,以v3为迷宫图
    3

  6. *到#的路径为222441144222,尝试即为flag

工具:ExEinfo PE、IDA

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值