栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 软件开发 > 后端开发 > Python

2021年“绿城杯”网络安全大赛-Reverse-[warmup]easy

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2021年“绿城杯”网络安全大赛-Reverse-[warmup]easy

2021年“绿城杯”网络安全大赛-Reverse-[warmup]easy_re

题目名称:[warmup]easy_re
题目内容:热身题,逆向
题目分值:100.0
题目难度:容易
相关附件:[warmup]easy_re的附件.zip

解题思路:

main函数看到最后发现关键比较
分析得知v21是输入,v16是大数数组
这里ida将v16后面的值分成了别的变量,实际上也在v16之中
前两个循环用python模拟得到了v24的值

v16=[ 0xF5, 0x8C, 0x8D, 0xE4, 0x9F, 0xA5, 0x28, 0x65, 0x30, 0xF4, 
0xEB, 0xD3, 0x24, 0xA9, 0x91, 0x1A, 0x6F, 0xD4, 0x6A, 0xD7, 
0x0B, 0x8D, 0xE8, 0xB8, 0x83, 0x4A, 0x5A, 0x6E, 0xBE, 0xCB, 
0xF4, 0x4B, 0x99, 0xD6, 0xE6, 0x54, 0x7A, 0x4F, 0x50, 0x14, 
0xE5, 0xEC] 
v23="tallmewhy" 
v24=[] 
v22=[] 
for i in range(256): 
v24.append(i) 
v22.append(ord(v23[i%len(v23)])) 
v6,v7=0,0 
while v6<255: 
v8=v24[v6] 
v7=(v7+v22[v6]+v8)%256 
v24[v6] = v24[v7] 
v6 += 1 
v24[v7]=v8^0x37 

最后一个循环有一个异或,输入和v24按字节异或,得到的和v16比较
直接将v16和v24异或得到输入

v12=0 
v9,v10,v20=0,0,0 
while v12+1<42: 
v9=(v9+1)%256 
v11=v24[v9] 
v10=(v10+v11)%256 
v24[v9]=v24[v10] 
v24[v10] = v11 
v12 = v20 
v16[v20]^=v24[(v11+v24[v9])&0xff] 
v16[v12]=chr(v16[v12]) 
v20 = v12 + 1 
print(''.join(v16)) 

print得到flag{c5e0f5f6-f79e-5b9b-988f-28f046117802}

转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/280239.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号