首页 > 其他 > 详细

攻防世界 resver catch-me

时间:2019-09-05 18:28:51      阅读:296      评论:0      收藏:0      [点我收藏+]

catch-me asis-ctf-quals-2016

程序有两处关键比较

第一处:

技术分享图片

 

 这里进行动态调试,得到v3=0xB11924E1, byte_6012AB[]= B1 19 04 A1

技术分享图片

 

 第二处关键比较:

技术分享图片

 

 关键处理:

技术分享图片

 

 

程序开始先生成了一个数v3,---> number_6012A8[]中保存v3特定位置0后数据,--->关键比较1 if ( getenv("ASIS") && (*(_DWORD *)getenv("CTF") ^ v3) == 0xFEEBFEEB )

可以求出getenv("CTF")的正确值:0xB11924E1 ^ 0xFEEBFEEB = 0x4ff2da0a

而关键数据dword_6012AC = *(_DWORD *)getenv("ASIS"); 即 number_6012A8[4:7]=getenv("ASIS")

后面一系列操作 对number_6012A8[0x20]进行求和,第二处关键比较 ,求和结果要等于0x954

 

我们可以知道正确的getenv("CTF"),但不知道getenv("ASIS"),猜测他们值相同

进行验证:

 1 haystack=[  0x87, 0x29, 0x34, 0xC5, 0x55, 0xB0, 0xC2, 0x2D, 0xEE, 0x60,0x34, 0xD4, 0x55, 0xEE, 0x80, 0x7C,
 2             0xEE, 0x2F, 0x37, 0x96,0x3D, 0xEB, 0x9C, 0x79, 0xEE, 0x2C, 0x33, 0x95, 0x78, 0xED,0xC1, 0x2B]
 3 v3=0xB11924E1
 4 target=0xFEEBFEEB
 5 t=v3^target
 6 print(hex(t))
 7 ctf=(t).to_bytes(4,little)
 8 
 9 number=[0xb1,0x19,0x04,0xa1]+(list(ctf))
10 
11 for i in range(0x20):
12     haystack[i]^=number[i&7]
13 h=sum(haystack)
14 print(hex(h))
15 print(‘‘.join(map(chr,haystack)))

输出:

0x4ff2da0a
0x954
600d_j0b_y0u_4r3_63771n6_574r73d

 

number_6012A8求和等于0x954,验证通过

ASIS{600d_j0b_y0u_4r3_63771n6_574r73d}

 

攻防世界 resver catch-me

原文:https://www.cnblogs.com/DirWang/p/11463182.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!