攻防世界Reverse解题(一)
介绍:记录解题过程
1.insanity(winhex打开,搜索字符串flag)
题目描述:菜鸡觉得前面的题目太难了,来个简单的缓一下
题目场景: 暂无
题目附件: 附件1
- 下载附件1 得到一个无后缀文件
- 用winhex打开,搜索字符串flag
- 得到flag
9447{This_is_a_flag}
2.python-trade(反编译pyc文件,逆向加密算法)
题目描述:菜鸡和菜猫进行了一场Py交易
题目场景: 暂无
题目附件: 附件1
- 下载附件1 得到一个pyc文件
pyc文件反编译
Easy Python Decompiler反编译工具,pyc文件反编译得到:
# Embedded file name: 1.py
import base64
def encode(message):
s = ''
for i in message:
x = ord(i) ^ 32
x = x + 16
s += chr(x)
return base64.b64encode(s)
correct = 'XlNkVmtUI1MgXWBZXCFeKY+AaXNt'
flag = ''
print('Input flag:')
flag = input()
if encode(flag) == correct:
print('correct')
else:
print('wrong')
- 逆向算法得到flag:
import base64
def uncode(message):
s = base64.b64decode(message)
b = ''
for x in s:
x = x - 16
x = x ^ 32
b += chr(x)
return b
correct = 'XlNkVmtUI1MgXWBZXCFeKY+AaXNt'
print('flag:', uncode(correct))
flag: nctf{
d3c0mpil1n9_PyC}
3.re1(开始学习逆向工程)
题目描述:菜鸡开始学习逆向工程,首先是最简单的题目
题目场景: 暂无
题目附件: 附件1
下载附件1 得到一个exe文件
方法一:直接搜flag
- Notepad打开直接搜flag
DUTCTF{We1c0met0DUTCTF}
方法二:
- 参考:
攻防世界reverse:re1
<1>.查壳 - 无壳,32位程序
<2>拖入IDA
找到main函数
F5反编译
int __cdecl main(int argc, const char **argv, const char **envp)
{
int v3; // eax
__m128i v5; // [esp+0h] [ebp-44h] BYREF
__int64 v6; // [esp+10h] [ebp-34h]
int v7; // [esp+18h] [ebp-2Ch]
__int16 v8; // [esp+1Ch] [ebp-28h]
char v9[32]; // [esp+20h] [ebp-24h] BYREF
v5 = _mm_loadu_si128((const __m128i *)&xmmword_413E34);
v7 = 0;
v6 = 0x7D465443545544i64;
v8 = 0;
printf("欢迎来到DUTCTF呦\n");
printf("这是一道很可爱很简单的逆向题呦\n");
printf("输入flag吧:");
scanf("%s", v9);
v3 = strcmp(v5.m128i_i8, v9);
if ( v3 )
v3 = v3 < 0 ? -1 : 1;
if ( v3 )
printf(aFlag_0);
else
printf(aFlagGet);
system("pause");
return 0;
}
由逻辑可知:
用户输入v9与v5比较,同则输出flag,所以flag在v5,跟踪v5
- 发现一串十六进制字符串,按R将其转化成字符串:
0tem0c1eW{FTCTUD
}FTCTUD
- flag出现,但要注意在x86处理器中字符是按照小端序储存的,即低位字节存入低地址,高位字节存入高地址
- 所以正确的flag应为
DUTCTF{We1c0met0DUTCTF}
4.game
题目描述:菜鸡最近迷上了玩游戏,但它总是赢不了,你可以帮他获胜吗
题目场景: 暂无
题目附件: 附件1
- 下载附件1 得到一个exe文件,是一个小游戏
|------------/ --------△--------|
|------------/ --------○--------|
|------------/ --------◇--------|
|------------/ --------□--------|
|--------------------|------------/ --------☆--------|
| |------------/ --------▽--------|
| |------------/ -----( ̄▽ ̄