X-NUCA2017线下赛赛后总结

这篇文章主要从防御角度来写,防护好自己的服务器,免受对手拿flag,以及如何绕过AWD模式下主办方的checker。比赛之前都是在做逆向的,学了几天Pwn,Patch方式比较粗暴,希望大佬别见怪,应该有很多疏漏,请指出。


Calc

kali下执行该软件,输入各种计算,构造内存泄漏

Calc文件计算部分函数

相对应的16进制编码

用010直接改申请的内存空间大小

关于使用malloc需要注意的地方:
A、申请了内存空间后,必须检查是否分配成功。
B、当不需要再使用申请的内存时,记得释放;释放后应该把指向这块内存的指针指向NULL,防止程序后面不小心使用了它。
C、这两个函数应该是配对。如果申请后不释放就是内存泄露;如果无故释放那就是什么也没有做。释放只能一次,如果释放两次及两次以上会出现错误(释放空指针例外,释放空指针其实也等于啥也没做,所以释放空指针释放多少次都没有问题)。
D、虽然malloc()函数的类型是(void *),任何类型的指针都可以转换成(void *),但是最好还是在前面进行强制类型转换,因为这样可以躲过一些编译器的检查。


Csgd

这些字符串让我们想起了昔日熟悉的CS

跟进/opt/xnuca/flag.txt,我们会看到有/bin/sh

所以,就进跟进/opt/xnuca/flag.txt字符串, 然后F5反编译. 结果如下:
sub_402B5D这个函数的作用就是用来获取后门

所以直接在这个函数头部ret, 成功绕过checker


Fileparser

获取flag路径的16进制

这题我们直接在16进制里修改获取flag的目录, 没想到居然绕过了checker.
有师傅说会被检测到, 可能是因为没有在相应目录下创建flag.txt吧, 把路径修改为/home/xnuca/flag.txt, 此外在这个目录下构造了一个假flag.

你可能感兴趣的:(X-NUCA2017线下赛赛后总结)