Mysterious与re-for-50-plz-50

**

Mysterious

**
这道题目通过字符串可以确定关键代码

稍做分析可以确定主要是利用了atoi()函数的特性

int atoi(const char *nptr) 函数会扫描参数 nptr字符串,会跳过前面的空白字符(例如空格,tab缩进)等。如果 nptr不能转换成 int 或者 nptr为空字符串,那么将返回 0。特别注意,该函数要求被转换的字符串是按十进制数理解的。

Mysterious与re-for-50-plz-50_第1张图片Mysterious与re-for-50-plz-50_第2张图片Mysterious与re-for-50-plz-50_第3张图片Mysterious与re-for-50-plz-50_第4张图片
可以判断出来输入恰好六位 后三位很容易确定为xyz

前三位的话是十进制的“{” 也就是123 记得减1 也就是122

最后确定为122xyz
最终答案:flag{123_Buff3r_0v3rf|0w}
**

re-for-50-plz-50

**
下载文件,直接用IDA打开
Mysterious与re-for-50-plz-50_第5张图片懵逼了……
经过学习,了解到MIPS是一个指令集。
不了解MIPS,学习去。
分析主要的函数,给我的大致感觉是异或,因为有字符串

Mysterious与re-for-50-plz-50_第6张图片编写脚本:

s = "cbtcqLUBChERV[[Nh@_X^D]X_YPV[CJ"

num = 0x37

for i in s:
	print(chr(ord(i)^num),end="")

得到答案:TUCTF{but_really_whoisjohngalt}
这道题说起来不难,就是考察你对MIPS指令集的了解,但是要是不会MIPS,就去学一下吧。

你可能感兴趣的:(Mysterious与re-for-50-plz-50)