今天在看 ELF 的时候突然脑子出了一个小差。很多相关大佬的文档在描写 ELF 的同时会描述自己如何参加CTF比赛,一直以来是一个普通开发,突然有意向了解一下相关的内容。恰好登陆看雪的时候,说我还是临时会员,如果想要变成正式会员的话,需要发帖挣RANK。
虽然很菜,但是总要迈出第一步不是?从网上搜到了看雪的挑战赛,小试牛刀。
GAME 第一关:
GAME
乍一接触有点蒙,没玩过这种题目。以为是 ascii 码值然后进行各种编码。 后来想到是不是 mos code。 一查,还真是。获得1分。
Reverse Rechall
Reverse
乍一接触又有点蒙,这是当时唯一一道 ELF 格式的题目,所以自然而然就开始了(平时工作主要使用 linux 进行开发)。
先静态分析,看符号表: 有些checkers, 感觉是个非常重要的突破口。但是现在我还没有机会运行。不知道怎么运行。。。里面还有md5校验,还不知道这个东西是用来做什么。
代码完全没有经过混淆,直接看main函数可以获得大体的流程。
最终可以简单确认,是输入一个数字进行一个校验,输入4个,最后做个md5的校验。
第一关很简单,根据代码流程就可以直接得出最终的数值。这里需要注意的是,一开始需要使用gdb来确定输入的是 十六进制 还是 十进制。
第二关到第四关花费了我好长时间,我一直使用静态分析,也就是阅读源码这种方式。第一关就是这么过的,第二关也就照葫芦画瓢。没想到啊没想到,最终给自己整出来一个 位运算 一元一次方程组!!!
我还询问了chatGPT,给我的答案都不对。
不对劲,很不对劲。相当于我要解下面一个方程。
真是闻所未闻,大学老师也没教过啊?!
怎么可能?我感觉 CTF 肯定不是这么比赛的。
最后,通过 code-lifting 移植了三个程序后,通过了。
094K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6T1L8r3!0Y4i4K6u0W2j5%4y4V1L8W2)9J5k6h3&6W2N6q4)9J5c8Y4A6&6K9s2y4W2i4K6u0r3j5i4u0@1K9h3y4D9k6g2)9J5c8X3c8W2N6r3q4A6L8s2y4Q4x3V1j5I4x3o6j5$3x3o6M7@1y4K6p5`.: 救命的。
[培训]Windows内核深度攻防:从Hook技术到Rootkit实战!
Editor 文章写的有趣,分享了思路,文章稍有些简单,再完善下就好了。 转为正式会员邀请码短信你了。