美文网首页
Easy_ELF 2018-10-27

Easy_ELF 2018-10-27

作者: 小白King | 来源:发表于2019-01-13 02:03 被阅读0次

    这是个暨南大学的校赛题目,第一次尝试破解ELF的题目,作此分享:

    1、首先拖进IDA,认准32位(可以去试试64位的,但事实证明是32位的),目录如下:

    找到关键入口函数——main函数

    然后F5,进入到伪C代码,如下:

    观察下main函数,可以知道write函数就是提示信息的函数,所以第一行应该是提示你输入一串东西(你的密钥)

    所以sub_8048434()是输入函数。接着看到了if的判断函数,相信密钥就在里面,因为有cmd,看条件可以知道条件==1时才是正确输出,看看if下面的那个函数,如下:

    果然如果if成立,那么correct!,所以最后的答案在if中,走,去看看:

    因为要返回的是true,所以可以知道,非0,所以凡是return 0的都是不行的,反之,可以知道,括号里面都是不成立的,相反的。

    所以,从题目可以知道一些信息,804A020 = 120,这个是新的值,它是通过与0x34u异或得到的,所以根据双重异或得原来的结果(最简单的加密算法)可以得到原来的804A020的值,804A021=49,804A022也异或,23也异或,24就是88,25没有信息非0(无用信息),拿脚本去运行下:

    成功得到我们的flag:L1NUX

    在这里给个提醒,如果用python去写脚本会报错(之前我试过)因为python默认的是无符号的,而C++比较只能有符号位,会自动识别!大家可以记一下,负数转char用C++,而全是正数时,可以用python。

    相关文章

      网友评论

          本文标题:Easy_ELF 2018-10-27

          本文链接:https://www.haomeiwen.com/subject/mvcjtqtx.html