美文网首页
2019 KCTF 晋级赛Q1 | 第六题点评及解题思路

2019 KCTF 晋级赛Q1 | 第六题点评及解题思路

作者: 看雪学院 | 来源:发表于2019-04-01 21:28 被阅读0次

Happy Fool's Day~愚人节快乐!今天你有被套路吗?

今天我们不开玩笑,来认认真真看KCTF 第六题《REPWN》不知道这道题有没有让你怀疑人生呢?

本题围观人数为2553人,共有94支队伍攻破成功,第一血由“pizzatql”用时13786s摘得。

出题战队

战队成员:findreamwang

个人主页:https://bbs.pediy.com/user-739734.htm

个人简介:HaCky,目前就读于西安某高校网络工程专业,现在主要的研究方向是病毒分析和内核研究(即将要学),大一开始学习安全技术。第一次参加KCTF,编码方面多有不足,请各位大佬轻打!

看雪CTF crownless 评委 点评

此题使用了pwn题和re(逆向)题相结合的方式,还涉及了DES加密的识别,考察了DES的理解。总的来说,是一道考察选手综合能力的好题目。

题目设计思路

题目信息

参赛题目:Repwn

题目答案:

20101001X1Y0uN3tG00dHaCkWel1C0me

题目设计

本题使用的Pwn题和Re题相结合的方式,考察选手的综合能力。

首先,编码不加任何混淆和反调试,题目友好,在入口处不对字符串设置加密。

其次main流程简单,易于理解,设置两层check

逆向思路简单,难度小。

同时也有计算题,此处不设置麻烦的运算,这样无趣。

最后需要构造溢出点,这样更加贴近实战,写exp等。

然后是溢出的地方,这里涉及到DES的识别问题,可以人工识别,最好是软件识别。本人菜鸡就不想搞变形的DES,这样难度会挺大的,能力也有限。

另外,对关键的字符串进行加密防止直接找到入口点,例如恺撒,异或。

同时也考察了DES基础理解,因为有个比较cmphex是40个,但是des只有32个字节。哈哈,小心机一把。

格式为第一次输入+第二次输入

破解思路

0x01 查壳

不存在任何壳。

0x02

拖入IDA中看到,定位到主函数,可以看到程序经过了两层验证check1和check。

0x03 过check1

得到大概key为xxxxxxxx(8位)X1Y0uN3tG00dxxx(x为未知数据,长度未知)

0x04 过check2

首先长度为24,进入check2_1

Check2_1中

首先将输入转化为Input,然后初始化数字X,Y,Z,我们可以知道x,y,z的生成关系如下:x是input的前四个构成一个4位数,y是input[4-5]构成的2位数,z是input[6-7]构成的2位数,然后解方程,很简单。

得到Input为20101001X1Y0uN3tG00dXXX

然后到达溢出点,目标是寻找溢出点,这个有点坑,方法不唯一,我的想法是这样的:首先查壳的时候发现有DES加密函数,一直交叉引用到溢出点:401C1

现在的问题是如何达到溢出点。00401C10,又由于小端序的问题,顺序应该是101C4000,也就是说input[23]-47=00,也就是说input[23]为47的ASCII,同理,溢出点设计为#$@/,Key为20101001X1Y0uN3tG00d#$@/

0x5 溢出后

之前,我们知道了DES加密。得到加密过程如下

末尾有个比较

引用查看一下:unk_406010,整理出来是40位:但是我们知道DES加密可能会生成32位,不可能生成40位的,所以我们去其32位。秘钥为XiyouNet,DES解密得到:Wel1C0m

解密

最后也提示了flag格式,所以flag为20101001X1Y0uN3tG00dHaCkWel1C0m

相关文章

网友评论

      本文标题:2019 KCTF 晋级赛Q1 | 第六题点评及解题思路

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