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

admin 2022年1月5日23:15:32CTF专场评论15 views1018字阅读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就这么出现了...


特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年1月5日23:15:32
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  【36D杯】逆向_签到和逆向_神光的wp http://cn-sec.com/archives/720167.html

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: