Hello,RE!
80
或许你需要去学习下IDA的使用,但是只需要学一点点就能做这题了
PS:IDA里面按R可以把奇怪的数字变成字符串
格式为flag{*****}
包含flag{}提交
参考资料:
《IDA Pro 权威指南》
各种CTF比赛的逆向部分的writeup
http://ctf.nuptzj.cn/static/uploads/0b562710385edcf655dfa0ae65c69592/1.exe
入门题,直接丢到OD里运行:
直接搜索中文字符:
可以看到一个字符比较函数,在哪里加一个断点试试(F2)运行:
可以看到 flag啦!!!
ReadAsm2
150
读汇编是逆向基本功。
给出的文件是func函数的汇编
main函数如下
输出的结果即为flag,格式为flag{**********}
,请连flag{}一起提交
编译环境为linux gcc x86-64
调用约定为System V AMD64 ABI
请不要利用汇编器,IDA等工具。。这里考的就是读汇编与推算汇编结果的能力
int main(int argc, char const *argv[])
{
char input[] = {0x0, 0x67, 0x6e, 0x62, 0x63, 0x7e, 0x74, 0x62, 0x69, 0x6d,
0x55, 0x6a, 0x7f, 0x60, 0x51, 0x66, 0x63, 0x4e, 0x66, 0x7b,
0x71, 0x4a, 0x74, 0x76, 0x6b, 0x70, 0x79, 0x66 , 0x1c};
func(input, 28);
printf("%s\n",input+1);
return 0;
}
参考资料:
https://github.com/veficos/reverse-engineering-for-beginners
《汇编语言》王爽
《C 反汇编与逆向分析技术揭秘》
http://ctf.nuptzj.cn/static/uploads/a480ff52cdbc70bd1443763f27f35279/2.asm
把下载的汇编文件打开后(记事本就行):
然后写一个小程序即可:
a = [0x0, 0x67, 0x6e, 0x62, 0x63, 0x7e, 0x74, 0x62, 0x69, 0x6d,
0x55, 0x6a, 0x7f, 0x60, 0x51, 0x66, 0x63, 0x4e, 0x66, 0x7b,
0x71, 0x4a, 0x74, 0x76, 0x6b, 0x70, 0x79, 0x66 , 0x1c]
s = ''
for i in range(1,len(a)):
print(a[i]^i,end = " ")
s += chr(a[i]^i)
print()
print (s)
运行即可
得到flag;
Py交易
150
Python 2.7
下载后直接丢到py反汇编的在网站:
让后写一个程序即可:
import base64
correct ='XlNkVmtUI1MgXWBZXCFeKY+AaXNt'
s = base64.b64decode(correct)
flag = ''
for i in s:
i = chr((i-16)^32) // 如果是py2环境i需要改为 ord(i);
flag += i
print (flag)
总结 :
入门题较为简单,不需要对汇编有多深的了解,会用工具即可;