吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 6268|回复: 11
收起左侧

[CTF] DDCTf2019re12

  [复制链接]
莫流云 发表于 2019-4-19 13:53
本帖最后由 莫流云 于 2019-4-19 14:08 编辑

首先我们用peid查看下发现加了壳,然后用工具脱壳即可然后载入IDA分析F5查看main函数如下
1.png
发现先经过一个固定函数处理然后和DDCTF{reverseME}这串字符串比较双击进入上面的sub_401000函数
2.png
对密码表一一处理len(flag)=16,
用od打开,通过右键->中文搜索引擎->智能搜索 定位关键位置
3.png
双击输入正确后提示you got***向上查找在scanf处下断点
4.png
然后f9运行,再f8单步步过,然后输入,直到到flag处理而函数
5.png
F7单步步入,
6.png
7.png
然后写脚本就行了。查看0x402ff8处内存全为0
脚本如下
[C++] 纯文本查看 复制代码
#include<iostream>
#include<stdio.h>
#include<cstring>
#include<stdlib.h>
#include<string.h> 
#include<string> 
void drypto(int a[],char*b)
{    inti, j,k=0;    
charc[17] = {};   
for(i = 0; i < 17; i++)    
   {         for(j = 0; j < 140; j++)         
    {             if(b[i] == a[j])            
     {                  c[k++]= char(j);            
 }         
}    
 }       
 printf("%s", c);}
int _tmain(int argc,_TCHAR* argv[])
{    inta[140] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0xB7, 0x10,0x1F, 0xB6, 0x48, 0xEF, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,0xFE, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x7E, 0x7D, 0x7C, 0x7B, 0x7A,0x79, 0x78, 0x77, 0x76, 0x75, 0x74, 0x73, 0x72, 0x71, 0x70, 0x6F, 0x6E, 0x6D,0x6C, 0x6B, 0x6A, 0x69, 0x68, 0x67, 0x66, 0x65, 0x64, 0x63, 0x62, 0x61, 0x60,0x5F, 0x5E, 0x5D, 0x5C, 0x5B, 0x5A, 0x59, 0x58, 0x57, 0x56, 0x55, 0x54, 0x53,0x52, 0x51, 0x50, 0x4F, 0x4E, 0x4D, 0x4C, 0x4B, 0x4A, 0x49, 0x48, 0x47, 0x46,0x45, 0x44, 0x43, 0x42, 0x41, 0x40, 0x3F, 0x3E, 0x3D, 0x3C, 0x3B, 0x3A, 0x39, 0x38,0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x30, 0x2F, 0x2E, 0x2D, 0x2C, 0x2B,0x2A, 0x29, 0x28, 0x27, 0x26, 0x25, 0x24, 0x23, 0x22, 0x21, 0x20, 0x00, 0x01,0x00, 0x00, 0x00, 0x88, 0x2E, 0x3B, 0x00, 0x58, 0x3C, 0x3B };   
charb[17] = "DDCTF{reverseME}";    
drypto(a,b);    
return0;}

re2Re2是re1的加强版首先还是先peid查壳然后脱壳,接下来ida打开分析,首先还是查看main函数,然后f5
8.png
双击到sub_1181240函数里面查看,
9.png
双击到sub_1181000函数里面查看
10.png
然后od动态调
11.png
步入关键函数看到
12.png
下面代码为吧咱们的输入两位两位组合在一起
13.png
继续向下看,
14.png
下面一关键函数我转换成了伪代码形势
(输入为ABCDEF时)
for(i=0;i<strlen(s)i+=3)
input code:x1=s[0]>>0x2        ab>>2==2A              esp=0x18x2=s[0]&0x3         
ab&0x3=0x3x3=s[0]<<0x4        0x3<<4=0x30x4=s[1]>>0x4        
CD>>0x4=0cx5=x4+x3            0x30+0xC=0x3C           esp=0x19x6=s[1]&0xF         
CD&0xF=0xDx7=x6*2             0xD*2=1Ax8=x7*2             1A*2=0x34x9=s[2]<<6         
EF<<0x6=0x3x11=x9+x8           0x34+0x3=0x37           esp=0x1Ax12=s[2]&0xF        EF&0xF=0x2F             esp+0x1B
需要用到的x1  x5    x11   x12需要用到的再和作为下标从密码表中取值再和0x76异或得到字串和flag判断是否正确,在根据字串手动逆回去就得到正确flag了
15.png

免费评分

参与人数 4威望 +1 吾爱币 +9 热心值 +3 收起 理由
Hmily + 1 + 7 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
℡小疯、 + 1 我什么都没看懂
iret_52 + 1 + 1 我很赞同!
RoB1n_Ho0d + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 莫流云 发表于 2019-5-3 17:43
625641201 发表于 2019-4-19 15:17
这道题我在OD的寄存器中的EAX可以查看到ascll答案的,还要写一个脚本花费了多一些时间

受教了看来我技术不到家
hahahunqiu 发表于 2019-4-19 14:17
625641201 发表于 2019-4-19 15:17
这道题我在OD的寄存器中的EAX可以查看到ascll答案的,还要写一个脚本花费了多一些时间
gxkyrftx 发表于 2019-4-19 16:57
大佬用的啥工具脱的壳啊?
yaoyao7 发表于 2019-4-19 18:03
为什么你们的虚拟机都是server?
gyzzzzz 发表于 2019-4-20 18:36
能脱掉壳么,我看od能做出来,但是脱不掉壳
头像被屏蔽
freemoredoom1 发表于 2019-4-20 20:07
提示: 作者被禁止或删除 内容自动屏蔽
iret_52 发表于 2019-4-21 01:15
看实例很有帮助!
chenjin056 发表于 2019-4-25 22:14
谢谢分享希望论坛越办越好
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 03:58

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表