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.

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. C++基础知识点 1.1 有符号类型和无符号类型 当我们赋给无符号类型一个超出它表示范围的值时,结果是初始值...
    Mr希灵阅读 18,049评论 3 82
  • iOS面试小贴士 ———————————————回答好下面的足够了------------------------...
    不言不爱阅读 6,169评论 0 7
  • __block和__weak修饰符的区别其实是挺明显的:1.__block不管是ARC还是MRC模式下都可以使用,...
    LZM轮回阅读 8,685评论 0 6
  • 有一篇文章描写曾比喻黑夜的黑特别凄美,夜路寻找遗忘痛的人总有醉意的把孤独藏身于黑夜之中。几分感叹、几分憔悴,附...
    雷哲余生阅读 2,880评论 0 0
  • 很早之前,就想着按照计划坚持读书,坚持做笔记,只是断断续续的,习惯没能养成,心底里倒也时常惦记着,不安着,...
    竹心不空阅读 952评论 0 0