xctf新手训练题
0x1 open-source
下载文件后可以直接看源码

要求是输入4个参数,第一个参数为’0xcafe’,第二个参数是符合判定条件的int值,第三个参数是’h4cky0u’,然后进行一些数据操作得到hash,并用十六进制方式输出(%x)
编写脚本实现,得到flag为0xc0ffee

0x2 simple-unpack
提示是加了壳的二进制文件,查壳

一开始不知道怎么脱二进制文件的壳,参考:https://bbs.pediy.com/thread-157645.htm
到软件中提示的地址下载脱壳程序进行脱壳(https://github.com/upx/upx/releases)

脱壳成功后用IDA查看,即得到flag

0x3 logmein
查看下载的文件

用IDA找到对应关键字进行分析

重点函数:

编写脚本即可

注意:小端模式
0x4 insanity
下载文件后直接编辑器就能查看到flag
0x5 getit
IDA中反编译


可以看到t就是flag,我们需要知道?的数值,编写脚本即可得到flag

此题注意:python中字符串是不可以直接操作修改的,可以先改为列表,然后重新生成
0x6 python-trade
.pyc后缀的文件,直接用EasyPythonDecompiler解了,获得源码



可以看到操作:对输入的字符串进行自定义的encode操作然后用base64加密
编写脚本解码即得flag

0x7 re1
放进IDA查看
查看主函数,可以看到只要输入的字符串和v5相同就可以了,找到对应v5的值即可得flag


0x8 Hello,CTF
用IDA打开,找到主要函数

从下面的循环判定值为17和上面v13的长度为34猜测出两位代表一个字符
十六进制转ASCII即可得flag

0x9 no-string-attached
IDA中查看主函数

进入每个函数看看
先看banner()

就是打印一些东西,查看对应打印的数值(unk_80488B0和8048960)

可以看到是两个字符串,就是一些欢迎的信息之类的
查看下一个,也是打印一些信息,需要你输入字符串


再看下一个,是主函数了,只要输入的函数和s2相同即可,s2是两个输入进行decrypt操作后得到的值

看decrypt,对两个宽字节进行了操作。编写脚本实现功能即可得flag


0xA csaw2013reversing2
IDA中看主函数

通过运行程序,发现并不会进入if的判定。
lpMem+1就是我们需要知道的乱码消息

可以知道通过memcpy_s操作将unk_409B10的数据给了lpMem

查看sub_401000

是对lpMem进行了一些操作的,猜测是由于并没有运行,所以出现乱码
用IDA动态调试(debugger),下断点

跳过进入判定后的ExitProcess(),直接跳到下面弹出messageboxA的地方,就能得到flag了

0xB maze
看题目就知道是一个迷宫题
IDA中找主函数

看到这四个不同函数的判断,猜测应该就是上下左右了

分别点进去查看,得知’O’为左,’o’为右,’.’为上,’0’为下,并且在函数中有规定了8这个边界值

接下来找迷宫和终点

通过最终判定的条件,可以知道终点是’#’

601060就是需要找的迷宫


在HEX界面查看

根据边界值8重新排列,23就是终点,只走20即可得flag
