西大CTF线下赛re第一题——第一次打线下赛


前言

第一次参加CTF线下赛,因为一直学习的逆向方向,在这里记录一下做出来的reverse第一题的WP,与以后上传的博客一起做一个学习历程。


一、工具:

我所用的工具(如果有新的将来在补充)
查壳工具:PEID 和exeinfope
调试工具:idapro(静态调试,32位和64位),OllyDBG(动态调试32位),x64dbg(动态调试,64位)
去壳工具:目前没找见好用的,以后补充
推荐一个CFFExplore工具,可以固定文件的头地址,这样就不会出现ida和od中的地址不同的现象

二、WP

1.打开exe文件

在这里插入图片描述

是让输入一串字符来确定是否为flag,一般这种题的思路,用OD运行到字符串输入的位置,若flag直接存储在文件里,直接往后将flag运行到寄存器中直接查看flag
这道题并没有这样做,难点的地方在于它将输入提示字符串和成功提示字符串都进行了加密,用查看字符串的方式并不能定位到字符串的存储。

2.OD运行确定输入函数位置

在这里插入图片描述

确定输入函数位置后,再打开ida查看反编译出的函数


## 3.iIDA查看

在这里插入图片描述这是输入函数的位置,F5进行反编译,在函数结尾发现了输入字符串存储的位置

在这里插入图片描述双击这个变量,进入汇编查看交叉引用,还有那些函数调用了这个参数

在这里插入图片描述
除了输入函数就只剩一个函数进行了调用,那必然是输出函数,里面应该有输入字符串的加密和加密字符串的比较

在这里插入图片描述这里可以截取的是加密后的判断,可以直观的分析出是如何加密和比较的,
根据if条件判断v6的值有5个,从1到5,与密文进行异或运算,现在只要拿到密文就可以了
在这里插入图片描述
最后就是进行反运算编码,这个比较简单就不放了

总结

第一次参加线下赛,还是很紧张的,一波团从上午八点打到下午五点自己还是0输出确实说不过去,逆向的学习还是不够,努力学习,早点财富自由,退休养老,进行社会观察,这才是我真正想要做的,前提一定是要有经济基础,最后晚安,打工人!哦不,现在还是苦逼学习仔,若以后成为大神,再来留言了。