2021-10-04 CTF-Reserve

基础框架

指令体系

逆向分析

算法识别

通常CTF中会出现base64、TEA、AES、RC4、MD5等算法

特征:

算法
base64 64+1位表、右移左移取二进制操作
TEA 每轮加密涉及移位 <<4 >>5 与 delta常量(0x9e3779b9)
AES 主要特征为sbox(0x63)和逆sbox(0x52)
RC4 涉及初始化函数和加密函数(交换s[i]与s[j])、 %256
MD5 散列常量:0x67452301、0xefcdab89、0x98badcfe、0x10325476

反调试

Windows

自动化反调试

当遇到花指令或其他需要Patch汇编时

  1. 使用IDAPatch
  2. 使用IDCPython自动化批量Patch

Linux

虚拟机保护

通常,VMProtect等商用软件采用了虚拟机保护技术,它们核心都会有一个vm_init阶段完成初始化自己的一套(ISA)指令集架构

脚本语言逆向

.NET/Python/Java

RxEncode

分析

静态分析 很像是换表的BASE64
关键算法:
Pasted image 20211001173759.png
Pasted image 20211001173807.png

C 库函数 **char strrchr(const char str, int c) 在参数 str 所指向的字符串中搜索最后一次出现字符 c(一个无符号字符)的位置。

已经确定是换表的basee64解码,等待进一步完善RXEncode.py的EXP

Real_easy_python

分析

查壳是 python3.7的pyc文件
Pasted image 20211001172526.png

使用uncompyle6工具解码转换py:
root@ubuntu:~# uncompyle6 -o puzzle.py puzzle.pyc

解码代码:


# uncompyle6 version 3.7.4
# Python bytecode 3.7 (3394)
# Decompiled from: Python 3.5.2 (default, Jan 26 2021, 13:30:48) 
# [GCC 5.4.0 20160609]
# Embedded file name: ./source.py
# Compiled at: 2020-08-03 05:55:47
# Size of source mod 2**32: 515 bytes
key = [
 115, 76, 50, 116, 90, 50, 116, 90, 115, 110, 48, 47, 87, 48, 103, 50, 106, 126, 90, 48, 103, 116, 126, 90, 85, 126, 115, 110, 105, 104, 35]
print('Input your flag: ', end='')
flag = input()
out = []
for i in flag:
    out.append(ord(i) >> 4 ^ ord(i))

if len(out) != len(key):
    print('TRY AGAIN!')
    exit()
for i in range(len(out)):
    if out[i] != key[i]:
        print('TRY AGAIN!')
        exit()

print('you are right! the flag is : moectf{%s}' % flag)

EXP

顺加倒解

key = [
 115, 76, 50, 116, 90
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值