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