主要写一下自己出的题目和一些有趣的部分的WP。
先讲我出的部分(接下来的语气会模拟做题的艰辛)


MENU

By Kyr1os

Not By Kyr1os



RE

TouHouProject

这个题建议动态调试,逻辑看起来可能比较清楚一些,适合萌新入门。

Easy


直接进easy会发现拒绝访问,这种绕过最简单,直接定到输入后的逻辑查看原因。

在输入字符串的匹配流程中我们可以看到两个连续的strcmp函数。
第一个strcmp将输入字符串和"easy"比较。这里直接通过。第二个strcmp将输入字符串和"lunatic"比较,如果匹配失败则直接跳转到Access Denied。"easy"和"lunatic"肯定是不能匹配的。这里只要在验证的时候修改验证结果,防止跳到Access Denied那里即可。

留意一下Access Denied的位置,我们让00007FF6892869FB处的跳转不执行执行00007FF689286A01处的跳转,就可以直接拿到flag(毕竟说好的简单难度)

Normal


过这个题的方法就很多了,过normal的居然比easy多,直接从网上找现成外挂过的都有???
反正面试遇到用现成外挂的选手就直接送走吧。

目标是过关,方法肯定有很多,你可以去掉被弹判定,取消死亡判定,修改生命的数量等等。你也可以直接像p姐姐一样硬扭过去(加油,我反正打不过)
这里主要讲一下我觉得简单的做法,直接干掉死亡判定。
这里其实给萌新留了一条线索,死亡判定的地方会打印一条"GameOver"这样的信息,我们在调试器里也可以直接搜索字符串定位过去。

看到熟悉的exit函数,可以确定GameOver就是这里。

出于减少异常的考虑,我决定干掉跳转到GameOver的语句,找一下前面地址的引用可以跟过去。

选中的call是跳到GameOver的,可以看到执行call之前有一个无条件的jmp语句,所以我们只需要Nop掉00007FF6AA9DE079处的jle跳转,这个跳转指向call GameOver,就可以让GameOver这段代码不执行。

顺便一提,获得flag需要在通关的同时获得150000分以上,有了无敌随便打打就过了。


Misc

上课小动作

Wireshark打开流量包,在tcp流里面翻一下能看到传输的文件是一个叫CNSS 2017的Word文档

再之后这个就是文件的具体内容,直接抓下来

Word打开拿到flag(其实你看到文件头有PK的话用zip打开翻那个XML里应该也能看到明文flag。)

图书馆魅影

给的Hint是机器的序列号

由tag环境联想到环境变量,直接查看环境变量就可以

云上之灵

传统的LSB,直接stegsolve打开翻了一下顺序,最后可以在BGR顺序的最低有效位找到明文

拿去解一下直接得到flag


PWN

Easymaze

程序丢进IDA看到输入名字的地方一个大写的栈溢出

buf是一个char型变量,这里read可以读1000.

进入栈空间里看一下,算出buf首地址到返回地址的距离 = 0x7a + 0x8 = 130。构造payload一把梭。这里注意一下方向键的问题就好。

exp:

猜老婆

输入那里存在格式化字符串漏洞。
大概思路把got表里printf改成system的地址就可以。
懒得写(懒癌晚期