REVERSE-PRACTICE-BUUCTF-8
REVERSE-PRACTICE-BUUCTF-8
- [GUET-CTF2019]re
- 相册
- [V&N2020 公开赛]strangeCpp
- [BJDCTF2020]easy
[GUET-CTF2019]re
elf文件,有upx壳,脱壳后ida分析
字符串交叉引用来到主逻辑函数sub_400E28
逻辑清晰,获取输入,验证输入,重要的是sub_4009AE函数
进入sub_4009AE函数,是对输入每个字符的验证,输入长度为32,这里没有验证input[6]
写脚本,由于程序没有验证input[6],即“#”位置的字符,试出来为“1”时提交成功
相册
apk文件,用jadx-gui没发现主逻辑
用Apktool Box反编译apk,xiangce1->lib->armeabi->libcore.so
ida分析该so文件
shift+F12,在字符串窗口的最下面发现三段可疑字符串,很像base64
解这三段字符串,由题目的提示可知,flag的内容为完整的邮箱
[V&N2020 公开赛]strangeCpp
exe程序,运行后输出了本机系统相关的信息,按任意键结束,无壳,ida分析
在字符串窗口找到一些字符串,提示真正的flag需要找找
字符串交叉引用来到sub_140013AA0函数,该函数就是获取了本机系统信息然后打印,乍一看没什么特殊的地方
__int64 __fastcall sub_140013AA0(__int64 a1, __int64 a2, __int64 *a3)
{char *v3; // rdisigned __int64 i; // rcx__int64 v5; // rax__int64 v6; // rax__int64 v7; // rax__int64 v8; // raxchar v10; // [rsp+0h] [rbp-20h]struct _SYSTEM_INFO SystemInfo; // [rsp+28h] [rbp+8h]__int64 *j; // [rsp+78h] [rbp+58h]__int64 v13; // [rsp+98h] [rbp+78h]__int64 *v14; // [rsp+1A0h] [rbp+180h]v14 = a3;v3 = &v10;for ( i = 94i64; i; --i ){*(_DWORD *)v3 = -858993460;v3 += 4;}sub_1400110AA(&unk_140027033);GetSystemInfo(&SystemInfo);putchar(byte_140021004);putchar(byte_140021005);putchar(byte_140021006);putchar(byte_140021007);putchar(byte_140021019);putchar(byte_14002101A);putchar(byte_140021005);putchar(10);puts("Let me have a look at your computer...");for ( j = v14; *j; ++j ){v13 = *j;sub_140011226("%s\n", v13);}std::basic_ostream<char,std::char_traits<char>>::operator<<(std::cout, sub_140011127);dword_140021190 = SystemInfo.dwNumberOfProcessors;sub_140011226("now system cpu num is %d\n", SystemInfo.dwNumberOfProcessors);if ( dword_140021190 < 8 ){puts("Are you in VM?");_exit(0);}if ( GetUserNameA(Str1, &pcbBuffer) ){v5 = sub_140011172(std::cout, "this is useful");std::basic_ostream<char,std::char_traits<char>>::operator<<(v5, sub_140011127);}v6 = std::basic_ostream<char,std::char_traits<char>>::operator<<(std::cout, sub_140011127);v7 = sub_140011172(v6, "ok,I am checking...");std::basic_ostream<char,std::char_traits<char>>::operator<<(v7, sub_140011127);if ( !j_strcmp(Str1, "cxx") ){v8 = sub_140011172(std::cout, "flag{where_is_my_true_flag?}");std::basic_ostream<char,std::char_traits<char>>::operator<<(v8, sub_140011127);_exit(0);}system("pause");sub_1400113E3(&v10, &unk_14001DE50);return 0i64;
}
仔细观察发现,在sub_140013AA0函数开始的部分,几个putchar的参数的存储地址并不连续
进入到data段,在“welc”和“om”之间有一个在sub_140013AA0函数中没有用到的数组
交叉引用这个数组来到sub_140013580函数,分析知道,有一个arg和这个数组的元素依次异或后输出,重要的是求出这个arg
arg首先作为参数传入了sub_140011384函数,返回结果存储在result中,下面的if语句对result和arg都有要求,进入sub_140011384函数,可知resul可由arg求出
写脚本即可得到flag
#include<stdio.h>
void main()
{unsigned char arr[] = { 0x26, 0x2C, 0x21, 0x27, 0x3B, 0x0D, 0x04, 0x75, 0x68, 0x34,0x28, 0x25, 0x0E, 0x35, 0x2D, 0x69, 0x3D };__int64 result = 607052314;int arg = 0;while (arg <= 14549743){int v5 = arg >> 12;int v6 = arg << 8;if (result ==(v6^v5)*291){printf("%d——", arg);for (int i = 0; i < 17; i++){printf("%c", arr[i] ^ arg);}printf("\n");}arg += 1;}return;
}
运行结果
[BJDCTF2020]easy
exe程序,运行后提示要找flag,无壳,ida分析
main函数没什么特殊的地方
在函数窗main函数的上面有一个ques函数,ques函数没有要求输入,但是有输出打印
想要看看ques函数打印了什么东西,要调试这个exe程序,在main函数return前下断点
程序停下后,去到ques函数的第一条指令处,设置为当前IP
在ques函数return前下断点,F9执行完ques函数,打印的内容即为flag
REVERSE-PRACTICE-BUUCTF-8相关推荐
- BUUCTF Reverse/findKey
BUUCTF Reverse/findKey 先看文件信息:32位程序,没有加壳 打开看看,标题为find flag,也没啥有用的信息 IDA32位打开,找到start函数,看到有个main,跟随跳转 ...
- BUUCTF Reverse helloword、findit
BUUCTF Reverse helloword.findit helloword findit 一天一道CTF题目,能多不能少 记录一下这两道题,这两道题是安卓逆向的题目~ 第一次接触安卓逆向的题目 ...
- BUUCTF Reverse/Ultimate Minesweeper
BUUCTF Reverse/Ultimate Minesweeper 先看文件信息,没有加壳,且为net编写的程序 运行是一个扫雷游戏,只要点错一个就会自动退出(左上角显示的是雷的数目,一共有897 ...
- BUUCTF Reverse xor
题目:BUUCTF Reverse xor 一些犯傻后学到了新东西的记录 查壳,没壳,IDA打开 main函数很好理解,输入一个长度为33的字符串,1-32位与前一位异或后与global相等,则判定f ...
- BUUCTF Reverse/[网鼎杯 2020 青龙组]jocker
BUUCTF Reverse/[网鼎杯 2020 青龙组]jocker 先看下文件信息,没有加壳,32位程序 运行一下,又是一道字符串比较的题目 用IDA32位打开,分析一下 // positive ...
- BUUCTF Reverse/[GWCTF 2019]pyre
BUUCTF Reverse/[GWCTF 2019]pyre 下载得到一个pyc文件,用这个在线反编译pyc,pyo反汇编出代码 print 'Welcome to Re World!' print ...
- BUUCTF reverse题解汇总
本文是BUUCTF平台reverse题解的汇总 题解均来自本人博客 目录 Page1 Page2 Page3 Page4 Page1 easyre reverse1 reverse2 内涵的软件 新年 ...
- BUUCTF Reverse(helloworld)
BUUCTF Reverse(helloworld) 题目附件下载下来之后,是.apk后缀,所以可能是安卓逆向. 这里我用的工具是Android Killer,下载地址:https://xiazai. ...
- BUUCTF Reverse/[WUSTCTF2020]Cr0ssfun
BUUCTF Reverse/[WUSTCTF2020]Cr0ssfun 先看文件信息, IDA64位打开,很简单的题目,只要一个个输入就行 都是返回的这种元素 _BOOL8 __fastcall i ...
- [BUUCTF]Reverse——[网鼎杯 2020 青龙组]jocker
网上大部分是动调,我尝试IDC解一下, 无壳,32位,放入IDApro,查看main函数 查看wrong和str函数,借出假的flag a=[0x66,0x6B,0x63,0x64,0x7F,0x61 ...
最新文章
- 2022-2028年中国音像制品行业投资分析及前景预测报告
- python软件安装步骤-初学者python详细安装步骤_编程工具
- 大工13秋《专业英语(计算机英语)》在线测试2,大工13秋《专业英语(计算机英语)》在线测试2答案...
- 使用supervisor启动hbase
- 论MOS管开关对电源的影响
- 计算机打字比赛活动策划书怎么写,打字比赛策划书范文.docx
- 关于jedis2.4以上版本的连接池配置,及工具类
- linux找出重复数字,C语言笔试经典-查找多位数重复数字以及次数
- php 实现错字检查,PHP每日一练:编写写字符串检查函数
- 实操调试成功 基于NI-VISA的USBTMC接口程控仪器连接
- dede后台登陆提示 验证码不正确 解决办法
- 在PS中,1PX等于多少毫米?
- php strtok函数,strtok函数的使用示例
- Visual Assist X 10.9 builds 2333 with patch.7z
- 陈启峰 Size Balanced Tree
- hacks cheats injection
- 华为鸿蒙麒麟玉兔_华为!《鸿蒙出世:中国神兽图鉴》
- 视频加密播放 blob java
- CDN源站数据同步优化总结
- 如何选择免费CRM软件?有什么功能?
热门文章
- ubuntu下软件中心闪退问题解决
- asp.net 根据当前时间计算是否股票、期货、黄金交易日期
- 关于Java中的HashMap
- cocos 禁掉快速点击_win10系统快速运行debug程序的技巧
- shell变量里的字符替换
- 站怎么点都是一样_老鼠被卡在轮胎里,像是被点了穴道一样:这可怎么办才好?...
- 四阶混合累积量matlab_12m氢燃料电池城市客车电电混合动力系统设计方案
- python实现多人聊天udp_python—多任务版udp聊天机器人
- 计算机网络项目实训教程课后答案,计算机网络项目实训教程
- node python复用代码_python-代码复用(函数、lambda、递归、PyInstaller库)