少的第一题就是手脱upx新年快乐
2. [ACTF新生赛2020]easyre1
下载,查壳,有壳,UPX,xdbg启动
Xd打开,进入cpu窗口,老样子,先去看看程序的初始断点
发现一次性的PUSHAD,跟进查看
取消断点,在0040E480处设置新EIP
开始F8步过,寻找ESP单个寄存器变红的地址
结果下面第一步就是,内存窗口跟进
发现UPX,在十六进制第一组数字设置断点
F9运行程序,到达内存断点处
往上翻一翻,找到POPAD
找POPAD开始往下的JMP,即断点地址,记下地址,打开XDBG自带的脱壳工具
直接脱壳
随后对脱壳成功后的文件查壳、
脱壳成功,可以进入ida
找到关键字符串,跟进调查
找到关键函数,分析函数,由下面的for循环可知,flag的长度应该为12,再看上面的if判断语句,哪里是判断字符是否相等,但和flag没有什么关系,重点在for循环,for循环的意思是如果v1[i]不等于byte-402000那个可能是字符串数组的某个字符的变形,那就结束循环,跟进查看这个地址
验证是字符串数组,同时得到字符串数组中的元素,可以开始编写脚本,py,启动
可得flag:flag{U9X_1S_W6@T?}
3. [ACTF新生赛2020]rome
查壳,无壳,ida
有问题,跟进
又臭又长,分析函数
前面确定了v12的值,要我们输入v2,然后嵌套判断,最后经过一个函数,把大写变成小写,把小写转换车成大写然后和v12比较,一样就成功结束,很简单的脚本编写题,c,动
即flag:flag{Cae3ar_th4_Gre@t}
4:[FlareOn4]login
解压,发现没有运行文件,反而是一个网站和提示
查看页面源代码
不是很懂,ai分析
Js函数,没学到,但从ai哪里了解到这其实就是一个ROT13加密过程,得,直接脚本了,c,动
即flag:flag{ClientSideLoginsAreEasy@flare-on.com}
5:[WUSTCTF2020]level1
解压,发现有两个文件
Output哪里有几串数字
查壳level1,无壳ida
看了看,很简单得函数,读出txt里的数字,然后按for循环里得处理方式就得了,py,动
即flag:ctf2020{d9-dE6-20c}
6:[GUET-CTF2019]re
查壳,有壳
Xd去了,但是打不开,010看了一下,也没有魔改壳,kali看看能不能脱壳
你别说,kali真得,ida看看
、
发现人为字符串,跟进
分析函数,发现主要出现了4个函数,而且所有的变换都是在函数中进行的,除了最后的比较环节,逐个跟进调查,全都是很长的函数,排查后,发现真正重要的函数只有sub_4009AE这一个函数(其实主要是只能看懂这个函数,另外几个都是200行的怪物)
对函数分析,合理猜测a1就是我们要的flag,看了一圈没看到a1[6],那就先用’?’代替,编写脚本,py
接下来就从0到9一个一个试,最后试出来是1,得到flag:
flag{e165421110ba03099a1c039337}