BUUCTF NewStarCTF 2023 Week1 Reverse方向全wp

easy_RE

在这里插入图片描述
先查壳,64bit文件无壳。用ida64打开

在这里插入图片描述
看到flag{we1c0m
按tab反编译看看
在这里插入图片描述
看到了。flag{we1c0me_to_rev3rse!!}

在这里插入图片描述
查壳,UPX壳 64bit文件。
用upx工具脱壳
在这里插入图片描述
在这里插入图片描述

IDA64打开

在这里插入图片描述
点进去看看enc
在这里插入图片描述
逻辑就是enc-1

data = "gmbh|D1ohsbuv2bu21ot1oQb332ohUifG2stuQ[HBMBYZ2fwf2~"
result = ''

for char in data:
    xor_value = (ord(char)-1)
    result += chr(xor_value)

print(result.encode('utf-8').decode('unicode_escape'))
# flag{C0ngratu1at10ns0nPa221ngTheF1rstPZGALAXY1eve1}

Segments

在这里插入图片描述
64bit的ELF文件
在这里插入图片描述
根据提示,Shift+F7
在这里插入图片描述
去掉LOAD和.prgend连接起来的就是flag了
flag{You_ar3_g0od_at_f1nding_ELF_segments_name}

ELF

在这里插入图片描述
64bit ELF文件
在这里插入图片描述
一个encode加密和一个base64加密。
在这里插入图片描述
没有进行换表,直接解密就好

import base64

# 要解码的 Base64 编码文本
encoded_text = "VlxRV2t0II8kX2WPJ15fZ49nWFEnj3V8do8hYy9t"

# 使用 base64 模块进行解码
decoded_bytes = base64.b64decode(encoded_text)

# 打印解码结果
print(decoded_bytes)

得到
V\QWkt \x8f$_e\x8f’^_g\x8fgXQ’\x8fu|v\x8f!c/m

再看encode加密部分,异或0x20后+16 那就逆向一下 -16再异或0x20

在这里插入图片描述

data = "V\\QWkt \x8f$_e\x8f'^_g\x8fgXQ'\x8fu|v\x8f!c/m"
result = ''

for char in data:
    xor_value = (ord(char)-16)^0x20
    result += chr(xor_value)

print(result.encode('utf-8').decode('unicode_escape'))
# flag{D0_4ou_7now_wha7_ELF_1s?}

Endian

在这里插入图片描述
64bit ELF文件

在这里插入图片描述
在这里插入图片描述

numbers = [1968519710, 2069379587, 1297621516, 2068854845, 1936406553]

for num in numbers:
    result = num ^ 0x12345678
    ascii_result = "".join([chr((result >> (i * 8)) & 0xFF) for i in range(4)])
    print(ascii_result, end='')
    
# flag{llittl_Endian_a



AndroXor

在这里插入图片描述
用JEB打开。看MainActivity;按TAB反编译一下
在这里插入图片描述

这里慢慢分析一共3处关键信息,第一是s异或s1 第二处就是s和s1了。写个exp

enc = ['\u000E', '\r', '\u0011', '\u0017', '\u0002', 'K', 'I', '7', ' ', '\u001E', '\u0014', 'I', '\n', '\u0002', '\f',
       '>', '(', '@', '\u000B', '\'', 'K', 'Y', '\u0019', 'A', '\r']
enc1 = 'happyx3'
flag = []
for i in range(len(enc)):
    flag.append(chr(ord(enc[i]) ^ ord(enc1[i % 7])))
print("".join(flag))

# flag{3z_And0r1d_X0r_x1x1}

EzPE

在这里插入图片描述
打开来查壳发现,看不到什么信息,diagnose处看的到57 5A应该是pe文件损坏了

用十六进制编辑器WinHex打开看看
在这里插入图片描述
简单修改一下,WZ改成PE文件标识 MZ 后面第四行的90改成80 因为这里的文件偏移要指向PE起始处

在这里插入图片描述

再次用exeinfope打开就发现可以看到信息了

在这里插入图片描述

在这里插入图片描述
一个简单的异或处理,取出data中的数据,写个exp

data = [0x0A, 0x0C, 0x04, 0x1F, 0x26, 0x6C, 0x43, 0x2D, 0x3C, 0x0C,
        0x54, 0x4C, 0x24, 0x25, 0x11, 0x06, 0x05, 0x3A, 0x7C, 0x51,
        0x38, 0x1A, 0x03, 0x0D, 0x01, 0x36, 0x1F, 0x12, 0x26, 0x04,
        0x68, 0x5D, 0x3F, 0x2D, 0x37, 0x2A, 0x7D]
flag = []
for i in range(35, -1, -1):
    data[i] = data[i + 1] ^ data[i] ^ i
for i in range(len(data)):
    flag.append(chr(data[i]))
print("".join(flag))

# flag{Y0u_kn0w_what_1s_PE_File_F0rmat}

lazy_activtiy

还是JEB打开

在这里插入图片描述
在这里插入图片描述
主要看FlagActivity。

这一题用模拟器打开就是点击10000次就给flag,可以尝试找找flag在哪
最后在Resources里找,先找layout再跟进到layout_2
在这里插入图片描述
找到了。提交。

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

znonono

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值