攻防世界 reverse 简单

Hello,CTF

PEid查壳
在这里插入图片描述无壳,ida载入
在这里插入图片描述很明显将437261636b4d654a757374466f7246756e与输入字符串进行对比
同时在sprintf函数中将输入的字符串转换为16进制

sprintf 的参数为 %x 为16进制

十六进制转换为:CrackMeJustForFun

open-source

打开是个c源文件
在这里插入图片描述根据代码一顿操作
得到flag:c0ffee

simple-unpack

是个elf文件载入ida
在这里插入图片描述观察上方函数明显加壳
先用010edit查看壳
在这里插入图片描述为upx壳
拉进kali upx -d
再次载入ida
在这里插入图片描述得到flag

logmein

载入010edit
在这里插入图片描述无壳为elf
载入ida
在这里插入图片描述题目为简单算法的逆向
要求输入字符串为19为符合要求
注意:v7先取地址然后转换为16进制,并且注意小端序需要更改顺序
参考其他师傅的脚本

#include <iostream>
#include <cstdio>
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<<b<<endl;
}
 ———————————————— 
https://blog.csdn.net/qq_41667282/article/details/89261449(脚本链接)

insanity

010edit打开文件,无壳
ida载入
查看字符串
在这里插入图片描述尝试该字符串输入,确实为flag

no-strings-attached

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

python-trade

查看题目是个py逆向
先打开010editor
在这里插入图片描述大概猜测是个关于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
在这里插入图片描述大概观察题目
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

在这里插入图片描述得到变换后的字符串
通过ida搜索字符串得知flag格式
在这里插入图片描述注意前面少了一个大写的S
在这里插入图片描述这里也有暗示
最后拼出flag

csaw2013reversing2

程序是个exe文件
先打开peid查壳
在这里插入图片描述查看无壳
进入程序
在这里插入图片描述
出现一个乱码以及窗口带 flag
载入ida在这里插入图片描述是个mfc而且带有IsDebugger函数检测
查看汇编代码
在这里插入图片描述出现两段messagebox
尝试od进入

在这里插入图片描述
在此处修改je跳转到B9109B
进入call内查看

在这里插入图片描述得到flag

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值