攻防世界reverse新手练习区通关教程

open-source

下载附件打开来看看,三个条件达成即可

第一个是0xcafe,第二个是满足or的一个数字,第三个是h4cky0u

最后会输出key

攻防世界reverse新手练习区通关教程_第1张图片

把first注释掉,加上参数

攻防世界reverse新手练习区通关教程_第2张图片

编译c文件

gcc 1.c -o 2

./2 0 25 h4cky0u

最后输出key即可

simple-unpack

我们先用扫描壳工具,发现有upx壳

攻防世界reverse新手练习区通关教程_第3张图片

进行脱壳

upx -d

攻防世界reverse新手练习区通关教程_第4张图片

直接拿去ida搜索flag即可

攻防世界reverse新手练习区通关教程_第5张图片

Logmein

直接加载进ida然后指定main按F5

s是用户输入的字符串,先进行比较长度,如果长度比v8小

判断如果输入的字符串和经过运算后的后字符串不等则成功

说明字符串就是flag

攻防世界reverse新手练习区通关教程_第6张图片

攻防世界reverse新手练习区通关教程_第7张图片

攻防世界reverse新手练习区通关教程_第8张图片

最后根据所知内容编写exp

key1 = ":\"AL_RT^L*.?+6/46"

key2 = "harambe"

key3 = 7

flag = ''

for i in range(0,len(key1)):

    flag += chr(ord(key1[i]) ^ ord(key2[i%key3]))

print flag

攻防世界reverse新手练习区通关教程_第9张图片

Insanity

直接放进ida然后搜索flag即可

9447{This_is_a_flag}

攻防世界reverse新手练习区通关教程_第10张图片

python-trade

首先通过在线工具反编译出ptthon文件

攻防世界reverse新手练习区通关教程_第11张图片

然后通过他的编码方式写出解码方式

攻防世界reverse新手练习区通关教程_第12张图片

Game

顺序输入8,7,6,5,4,3,2,1即可

攻防世界reverse新手练习区通关教程_第13张图片

Hello, CTF

双击进去,就看到了十六进制的字符,转换一下即可

攻防世界reverse新手练习区通关教程_第14张图片

攻防世界reverse新手练习区通关教程_第15张图片

攻防世界reverse新手练习区通关教程_第16张图片

no-strings-attached

F5直接进去,双击authenticate,有个加密函数

攻防世界reverse新手练习区通关教程_第17张图片

攻防世界reverse新手练习区通关教程_第18张图片

然后就是编写exp

s1   =   [0x0000143A,   0x00001436,   0x00001437,   0x0000143B,   0x00001480,   0x0000147A, 0x00001471, 0x00001478, 0x00001463,0x00001466,   0x00001473,   0x00001467,   0x00001462,   0x00001465,   0x00001473, 0x00001460, 0x0000146B, 0x00001471,0x00001478,   0x0000146A,   0x00001473,   0x00001470,   0x00001464,   0x00001478, 0x0000146E, 0x00001470, 0x00001470,0x00001464,   0x00001470,   0x00001464,   0x0000146E,   0x0000147B,   0x00001476, 0x00001478, 0x0000146A, 0x00001473,0x0000147B, 0x00001480]
s2 = [0x00001401, 0x00001402, 0x00001403, 0x00001404, 0x00001405]
dest = s1
v4 = 0
flag = ''
v6 = len(s1)
v7 = len(s2)
while v4 < v6:
    i = 0
    while i < v7 and v4 < v6:
        dest[v4] -= s2[i]
        flag += chr(dest[v4])
        v4 += 1
        i += 1
print(flag)

攻防世界reverse新手练习区通关教程_第19张图片

Getit

s='c61b68366edeb7bdce3c6820314b7498'
v5=0
flag=''
while v5

攻防世界reverse新手练习区通关教程_第20张图片

re1

直接放进ida打开

假设一个十六进制数0x12345678

大端的存储方式是:12,34,56,78,然后读取的时候也是从前往后读

小端的存储方式是:78,56,34,12,然后读取的时候是从后往前读取

所以,最后的flag应该是:DUTCTF{We1c0met0DUTCTF}

攻防世界reverse新手练习区通关教程_第21张图片

攻防世界reverse新手练习区通关教程_第22张图片

csaw2013reversing2

放进ida按F5,发现关键函数

攻防世界reverse新手练习区通关教程_第23张图片

攻防世界reverse新手练习区通关教程_第24张图片

意思是如果在动态调试器中就进入判断运行,如果没有直接弹窗,显示乱码的值

Ollydbg

执行了mov指令,接下来调用call,F8继续执行,执行完,edx存的就是flag的地址

攻防世界reverse新手练习区通关教程_第25张图片

Maze

直接带进ida,发现main函数下有一些判断

攻防世界reverse新手练习区通关教程_第26张图片

可以发现这些函数会跳到lable15的位置,然后,对lable15分析,发现特殊的字符串

攻防世界reverse新手练习区通关教程_第27张图片

猜测可能是一个8*8的迷宫

根据迷宫最后得到的flag: nctf{o0oo00O000oooo..OO}

你可能感兴趣的:(攻防世界,ctf)