【NSSCTF逆向】【2023题目】《VidarCamera》《shellcode》

题目 VidarCamera

解法

这是一道安卓逆向题目,放在模拟器里打开看看

需要输入一个序列号啥的,扔jadx里吧。
通过字符串搜索定位到关键代码

这里应该就是一个变种TEA,更改了加密轮次,delta。
不过是TEA加密,写脚本不太难,自己的太丑了,贴个别人的

点击查看代码
from Crypto.Util.number import *

def decrypt(v, k):
    v0 = v[0]
    v1 = v[1]
    delta = 0x34566543
    x = delta * 33
    for i in range(33):
        x -= delta
        x = x & 0xFFFFFFFF
        v1 -= (((v0 << 4) ^ (v0 >> 5)) + v0) ^ (x + k[(x >> 11) & 3])
        v1 = v1 & 0xFFFFFFFF
        v0 -= (((v1 << 4) ^ (v1 >> 5)) + v1) ^ (x + k[x & 3]) ^ x
        v0 = v0 & 0xFFFFFFFF
    v[0] = v0
    v[1] = v1
    return v
    
c = [0x260202FA, 0x1B451064, 0x867B61F1, 0x228033C5, 0xF15D82DC, 0x9D8430B1, 0x19F2B1E7, 0x2BBA859C, 0x2A08291D, 0xDC707918]
key = [2233, 4455, 6677, 8899]
flag = b''
for i in range(len(c)-1):
    d = decrypt(c[-2:], key)
    flag = long_to_bytes(d[1])[::-1] + flag
    c = c[:-2] + [d[0]]

print(flag)

出flag

题目 shellcode

解法

pwn涉及的比较少,题目有一些细节没有明白,但草草还是可以做一下

查壳信息

进入main函数,可以看到有个类似base64的东东

得到数据
然后用python写一个脚本用来解密然后输出成一个二进制文件

点击查看代码
import base64

base64_string = "YOUR_BASE64_ENCODED_STRING"
output_file = "output.bin"

# 解码 Base64 字符串
decoded_data = base64.b64decode(base64_string)

# 将解码后的数据写入二进制文件
with open(output_file, "wb") as file:
    file.write(decoded_data)

print("解码成功,并已保存为二进制文件:", output_file)

ok,出来一个bin文件,扔进ida,这里需要create a function才能反编译


很明显的一个tea操作
写脚本

出flag

posted @ 2023-08-18 09:03  Corax0o0  阅读(51)  评论(0编辑  收藏  举报