【36D杯】逆向_签到和逆向_神光的wp

admin 2022年1月5日23:15:32评论65 views字数 1018阅读3分23秒阅读模式

>

This site is best viewed in a modern browser with JavaScript enabled.

### id="flarum-content">

【36D杯】逆向_签到和逆向_神光的wp

Yutian

###逆向_签到
IDA64打开,按F5。

看标箭头的几处,得知v6要等于0才正确。v6的运算是和后面的一串式子进行按位或,而0或0才能得到0,所以后面的一串异或式子的结果为0,那么因为异或的可逆运算,可以计算出v8。
脚本:

list=[102,109,99,98,127,58,85,106,57,82,122,55,81,19,51,35,67,70,41,61,41,32,127,28,38,77,49,20,80,94,-24,]
v6=0
v7=0
v8=0
l=len(list)
for i in range(l):
    # v8=v6
    # v6 |= v8^i^(i+(i^list[i]))
    v8 = 0^i^(i+(i^list[i]))
    print((chr(v8)),end='')

###逆向_神光
运行一下发现有字符串"key",IDA打开,Alt+T搜索"key",找到主函数,按F5

进入sub_4113B1

写脚本得到Str2的值

回到主函数,通过if判断得知需要让Str1与Str2相等,那么Str2就是key

运行程序,输入key:"wangzherongyao"

可以验证key正确了。回到主函数,进入sub_4113CF,对sub_415770反汇编时报错

到IDA汇编窗口,Alt+T搜索报错的415890,并Options→General→勾选Stack Pointer,发现415890这一行的sp值为负,所以报错

我选中add esp,15D8h这行指令,Edit→Patch program→Assemble,修改为nop空指令

然后再ALt+K一顿瞎改最后几行call、push等的sp,使得retn处的sp变回0,这样就可以F5了

成功反编译sub_415770,发现里面有俩循环,然后再由sub_4113E3继续处理dword_41A038,但是其中用于异或的dword_41A4DC的值我们却不知道

我想不出来怎么得到它的值,想想也许用od跑一下能在寄存器里找到它的值(但我不太会用od)
然后od打开,先一个劲点直直向下和三个点的按钮,直到出现输入key的提示,然后输入"wangzherongyao",结果flag就这么出现了...


  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年1月5日23:15:32
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【36D杯】逆向_签到和逆向_神光的wphttps://cn-sec.com/archives/720167.html

发表评论

匿名网友 填写信息