[ACTF新生赛2020]easyre

20 篇文章 0 订阅
"这篇博客介绍了如何在CTF比赛中通过分析UPX壳和字符串来解密加密的FLAG。作者首先提到使用Linux自带的UPX工具进行脱壳,然后通过查找关键字符串定位解密位置。注意到变量类型为int,确定FLAG长度为12个字符。接着,利用两个字符串列表进行碰撞得到FLAG下标,并转换为字符输出,最终得到FLAG为'flag{U9X_1S_W6@T?}
摘要由CSDN通过智能技术生成

[ACTF新生赛2020]easyre

Start

UPX壳,直接linux自带的UPX脱壳就行了

查看字符串:

在这里插入图片描述
定位到Please Input,交叉引用过去,来到关键位置:
在这里插入图片描述
这里注意下类型:
在这里插入图片描述
v13-v15v21-v23都是int类型,所以flag的长度是12个字符

先列出byte_402000的所有结果,然后用v1-v12进行碰撞,得到下标再+1得到的就是flag

exp.py:
key_hex_list = ['0x7e']               
key_list1 = '}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('
key_list2 = '&%$# !"'
for i in key_list1:
	key_hex_list.append(hex(ord(i)))
key_hex_list.append('0x27')
for i in key_list2:
	key_hex_list.append(hex(ord(i)))

encrypted_list = [42, 70, 39, 34, 78, 44, 34, 40, 73, 63, 43, 64]
tmp = []
for i in encrypted_list:
    tmp.append(hex(i))

index_list = []

for i in tmp:
	index_list.append(key_hex_list.index(i) + 1)

flag = ''.join(chr(i) for i in index_list)
print(flag)
Result:

flag{U9X_1S_W6@T?}

End

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值