52lxw 发表于 2018-12-27 23:59

defcamp re200题解

文件:
Linux 64位程序

用ida反编译,看看main函数


程序先构造了一个单项链表,数据存的是n,o,p,q,r.....10个字符。
然后用fgets读入数据,在0x40074d函数中检查。


进入函数0x40074d查看,用了双重循环。
可以知道链表的结构为 (0x00偏移,0x04字符,0x08下一项指针)
最后就是找flag中的字符在链表里面的偏移,保存到v6这个buffer里面。
最后拿v6和v9两个数组比较,相等则正确。

用python查看一下偏移
v9数组的值是5,2,7,2,5,6
对应的字符就是rotors

还有一个是反动态调试,直接在0x40084a处把push rbp改成retn即可。

erdaye 发表于 2018-12-28 08:18

没看懂感谢分享{:1_907:}

KTN德邦 发表于 2018-12-28 08:29


    没看懂,IT果然从事的岗位多,我是学.NET的!

kanxue2018 发表于 2018-12-28 08:58

谢谢分享优质的资源

御河 发表于 2018-12-28 09:10

谢谢分享优质的资源

超大的橙子 发表于 2018-12-28 11:32

想问下lz,在ida里面怎么修改代码

continueTan 发表于 2018-12-28 11:53

谢谢楼主分享

莱因哈特 发表于 2018-12-28 16:26


谢谢楼主分享

蓝虫 发表于 2018-12-28 17:18

谢谢分享优质的资源

成都 发表于 2018-12-28 19:43


谢谢分享优质的资源
页: [1] 2
查看完整版本: defcamp re200题解