攻防世界 reverse 简单

Hello,CTF

PEid查壳
攻防世界 reverse 简单_第1张图片无壳,ida载入
攻防世界 reverse 简单_第2张图片很明显将437261636b4d654a757374466f7246756e与输入字符串进行对比
同时在sprintf函数中将输入的字符串转换为16进制

sprintf 的参数为 %x 为16进制

十六进制转换为:CrackMeJustForFun

open-source

打开是个c源文件
攻防世界 reverse 简单_第3张图片根据代码一顿操作
得到flag:c0ffee

simple-unpack

是个elf文件载入ida
攻防世界 reverse 简单_第4张图片观察上方函数明显加壳
先用010edit查看壳
攻防世界 reverse 简单_第5张图片为upx壳
拉进kali upx -d
再次载入ida
攻防世界 reverse 简单_第6张图片得到flag

logmein

载入010edit
攻防世界 reverse 简单_第7张图片无壳为elf
载入ida
攻防世界 reverse 简单_第8张图片题目为简单算法的逆向
要求输入字符串为19为符合要求
注意:v7先取地址然后转换为16进制,并且注意小端序需要更改顺序
参考其他师傅的脚本

#include 
#include 
using namespace std;
 
int main()
{
	long long a = 28537194573619560;
	char * p = (char*)&a;
	char b[] = ":\"AL_RT^L*.?+6/46";
	for(int i = 0;b[i]!=0;i++){
		b[i] = b[i]^p[i%7];
	}
	cout<

insanity

010edit打开文件,无壳
ida载入
查看字符串
攻防世界 reverse 简单_第9张图片尝试该字符串输入,确实为flag

no-strings-attached

载入ida
简单分析出现的函数
攻防世界 reverse 简单_第10张图片确认主要函数为authenticate()
进入authenticate
攻防世界 reverse 简单_第11张图片观察函数,得知s和byte_8048a90经过decrypt函数的变换得到s2
然后unk_8048B44输出success字符
且从创建s2后s2不经过变换
观察对应汇编代码
攻防世界 reverse 简单_第12张图片得知call decrypt后s2不再变换,且后面与s2cmp
推测call decrypt返回eax的值为s2
ida动态调试一波
在这里插入图片描述进入eax所在的堆
在这里插入图片描述得到散装flag

python-trade

查看题目是个py逆向
先打开010editor
攻防世界 reverse 简单_第13张图片大概猜测是个关于base64的题目,编码内容应该是个XLN一串的字符
在线反编译

#!/usr/bin/env python
# encoding: utf-8
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 = raw_input()
if encode(flag) == correct:
    print 'correct'
else:
    print 'wrong'
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 = raw_input()
if encode(flag) == correct:
    print 'correct'
else:
    print 'wrong'

写出脚本

buf = base64.b64decode("XlNkVmtUI1MgXWBZXCFeKY+AaXNt")
for i in buf:
    ...:     i =ord(i)-16
    ...:     i ^=32
    ...:     flag += chr(i)
 print(flag)

getit

一题elf文件
拖入ida
攻防世界 reverse 简单_第14张图片大概观察题目
21行前是对字符串进行操作
21行后是对文件进行相关操作
观察字符串 s 的值
在这里插入图片描述为一串长度32字符
然后对第几位进行and操作来控制v3
最后对字符串 s 操作
上脚本

l = 'c61b68366edeb7bdce3c6820314b7498'
s= ''
for i in range( len(l)):
   ...:     if (i&1==1):
   ...:         v3=1
   ...:     else : v3=-1
   ...:     s+=chr(ord(l[i])+v3)
   ...:     i+=1
print s

攻防世界 reverse 简单_第15张图片得到变换后的字符串
通过ida搜索字符串得知flag格式
在这里插入图片描述注意前面少了一个大写的S
攻防世界 reverse 简单_第16张图片这里也有暗示
最后拼出flag

csaw2013reversing2

程序是个exe文件
先打开peid查壳
攻防世界 reverse 简单_第17张图片查看无壳
进入程序
攻防世界 reverse 简单_第18张图片
出现一个乱码以及窗口带 flag
载入ida攻防世界 reverse 简单_第19张图片是个mfc而且带有IsDebugger函数检测
查看汇编代码
攻防世界 reverse 简单_第20张图片出现两段messagebox
尝试od进入


在此处修改je跳转到B9109B
进入call内查看

攻防世界 reverse 简单_第21张图片得到flag

你可能感兴趣的:(攻防世界 reverse 简单)