“百度杯”CTF比赛 十一月场--CrackMe01
1.准备

获取信息
- 32位文件
2.IDA打开
熟悉Windows API的话,一般组成的就是MessageBox,ShowWindow...这里测试错误答案时,没有窗口提示,也就排除了MessageBox,而且要处理消息事件的话,直接查找默认消息处理DefWindowProc。
在import里面搜索DefWindowProc

点击进入之后,Ctrl+X查找用到的地方

一个一个进入,F5分析就行。(实际上就是第一个)
找到这么一段代码
LRESULT __stdcall sub_4027F0(int a1, UINT Msg, WPARAM wParam, LPARAM lParam)
{
UINT v4; // eax
LPARAM v5; // edx
__int16 v6; // bx
void *v7; // edi
HDC v9; // esi
unsigned int v10; // ecx
__int16 v11; // ax
unsigned int v12; // eax
int v13; // edi
int v14; // eax
struct tagRECT v15; // [esp+18h] [ebp-68h]
struct tagRECT Rect; // [esp+28h] [ebp-58h]
struct tagPAINTSTRUCT Paint; // [esp+38h] [ebp-48h] v4 = Msg;
v5 = lParam;
v6 = ;
v7 = (void *)wParam;
if ( Msg > 0xF )
{
if ( Msg != )
return DefWindowProcW((HWND)a1, v4, (WPARAM)v7, v5);
v10 = ;
do
{
v11 = *(_WORD *)(wParam + * v10++);
v6 += v11;
}
while ( v10 <= lParam );
v12 = ;
do
{
*(const WCHAR *)((char *)&chText + v12) ^= v6;
v12 += ;
}
while ( v12 < 0x2C );
GetWindowRect((HWND)a1, &v15);
v13 = (v15.left - v15.right + GetSystemMetrics()) / ;
v14 = GetSystemMetrics();
SetWindowPos((HWND)a1, HWND_MESSAGE|0x2, v13, (v15.top - v15.bottom + v14) / , -, -, 5u);
SetWindowPos((HWND)a1, (HWND)0xFFFFFFFE, , , , , 3u);
if ( (v6 & 0xF00) == 0x400 && (v6 & 0xF0) == 0xB0u && (v6 & ) == )
{
ShowWindow((HWND)a1, );
UpdateWindow((HWND)a1);
}
v7 = (void *)wParam;
LABEL_18:
if ( v7 )
free(v7);
v5 = lParam;
v4 = Msg;
return DefWindowProcW((HWND)a1, v4, (WPARAM)v7, v5);
}
switch ( Msg )
{
case 0xFu:
v9 = BeginPaint((HWND)a1, &Paint);
GetClientRect((HWND)a1, &Rect);
DrawTextW(v9, &chText, -, &Rect, 0x25u);
EndPaint((HWND)a1, &Paint);
goto LABEL_18;
case 1u:
return ;
case 2u:
PostQuitMessage();
return ;
}
return DefWindowProcW((HWND)a1, v4, (WPARAM)v7, v5);
}
3.代码分析
去除掉代码中对窗口消息,创建,我们需要的代码就是
do
{
*(const WCHAR *)((char *)&chText + v12) ^= v6;
v12 += ;
}
while ( v12 < 0x2C );
这里实际上就是对chText的前0x2c个进行了异或处理,代码中两个字节为一组,总共22组。
chText
F0 DA D7 D1 8C FF F5 FE
E3 F8 E7 FF E3 E9 F0 F3
F2 F4 F3
因此chText为
chText[]={0x4F0, 0x4DA, 0x4D7, 0x4D1, 0x48C, 0x4FF, 0x4F5, 0x4FE, 0x4E3, 0x4F8, 0x4E7, 0x4FF, 0x4E3, 0x4E9, 0x4F0, 0x4F3, 0x485, 0x480, 0x484, 0x4F2, 0x4F4, 0x4F3}
v6的值我们可以通过第44行代码
if ( (v6 & 0xF00) == 0x400 && (v6 & 0xF0) == 0xB0u && (v6 & ) == )
{
ShowWindow((HWND)a1, );
UpdateWindow((HWND)a1);
}
得到v6=0x4b6
4.脚本获取
chText = [0x4F0, 0x4DA, 0x4D7, 0x4D1, 0x48C, 0x4FF, 0x4F5, 0x4FE, 0x4E3, 0x4F8, 0x4E7, 0x4FF, 0x4E3, 0x4E9, 0x4F0,
0x4F3, 0x485, 0x480, 0x484, 0x4F2, 0x4F4, 0x4F3]
flag = '' for i in range(22):
chText[i] ^= 0x4b6
flag += chr(chText[i]) print(flag)
5.get flag!
Flag:ICHUNQIU_FE362DBE
“百度杯”CTF比赛 十一月场--CrackMe01的更多相关文章
- “百度杯”CTF比赛 十一月场(Misc)
签到题: 题目提示: 文件在i春秋的ctf2群里,加群下载文件 下载下来之后发现有压缩密码 题目提示有提示解压密码:key:ichunqiumemeda 打开文件,得到flag 签到题2: 点击下载附 ...
- [i春秋]“百度杯”CTF比赛 十月场-Hash
前言 涉及知识点:反序列化.代码执行.命令执行 题目来自:i春秋 hash 如果i春秋题目有问题可以登录榆林学院信息安全协会CTF平台使用 或者利用本文章提供的源码自主复现 [i春秋]"百 ...
- "百度杯"CTF比赛 十月场——EXEC
"百度杯"CTF比赛 十月场--EXEC 进入网站页面 查看源码 发现了vim,可能是vim泄露,于是在url地址输入了http://21b854b211034489a4ee1cb ...
- “百度杯”CTF比赛 十二月场_blog(kindeditor编辑器遍历,insert注入,文件包含)
题目在i春秋的ctf训练营中能找到 首先先是一个用户登录与注册界面,一般有注册界面的都是要先让你注册一波,然后找惊喜的 那我就顺着他的意思去注册一个号 注册了一个123用户登录进来看到有个文本编辑器, ...
- “百度杯”CTF比赛 九月场_YeserCMS
题目在i春秋ctf大本营 题目的提示并没有什么卵用,打开链接发现其实是easycms,百度可以查到许多通用漏洞 这里我利用的是无限报错注入 访问url/celive/live/header.php,直 ...
- “百度杯”CTF比赛 九月场_Test(海洋cms前台getshell)
题目在i春秋ctf训练营 又是一道cms的通用漏洞的题,直接去百度查看通用漏洞 这里我使用的是以下这个漏洞: 海洋CMS V6.28代码执行0day 按照给出的payload,直接访问url+/sea ...
- “百度杯”CTF比赛 九月场_123(文件备份,爆破,上传)
题目在i春秋ctf训练营 翻看源码,发现提示: 打开user.php,页面一片空白,参考大佬的博客才知道可能会存在user.php.bak的备份文件,下载该文件可以得到用户名列表 拿去burp爆破: ...
- “百度杯”CTF比赛 九月场_SQLi
题目在i春秋ctf大本营 看网页源码提示: 这边是个大坑,访问login.php发现根本不存在注入点,看了wp才知道注入点在l0gin.php 尝试order by语句,发现3的时候页面发生变化,说明 ...
- “百度杯”CTF比赛 九月场_SQL
题目在i春秋ctf大本营 题目一开始就提醒我们是注入,查看源码还给出了查询语句 输入测试语句发现服务器端做了过滤,一些语句被过滤了 试了一下/**/.+都不行,后来才发现可以用<>绕过 接 ...
随机推荐
- JPA学习(三、JPA_API)
框架学习之JPA(三) JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中 ...
- BZOJ 4245: [ONTAK2015]OR-XOR 贪心 + 位运算
Description 给定一个长度为n的序列a[1],a[2],...,a[n],请将它划分为m段连续的区间,设第i段的费用c[i]为该段内所有数字的异或和,则总费用为c[1] or c[2] or ...
- Codeforces 912D Fishs ( 贪心 && 概率期望 && 优先队列 )
题意 : 给出一个 N * M 的网格,然后给你 K 条鱼给你放置,现有规格为 r * r 的渔网,问你如果渔网随意放置去捕捞小鱼的情况下,捕到的最大期望值是多少? 分析 : 有一个很直观的想法就是 ...
- python爬虫系列之数据的存储(二):csv库的使用
上一篇我们讲了怎么用 json格式保存数据,这一篇我们来看看如何用 csv模块进行数据读写. 一.csv简介 CSV (Comma Separated Values),即逗号分隔值(也称字符分隔值,因 ...
- go语言系列--输出正弦函数
实验所用到的标准库和包 库与包之间的理解可以类比成:数据库种的库和表 库名 作用 image 常见图形格式的访问及生成 log 日志记录库 math 数学库 os 操作系统平台不依赖平台操作封装 查看 ...
- redis的安装及使用总结
Windows版本的安装 下载地址:https://www.jb51.net/softs/541181.html 安装过程 把压缩包内的文件解压到非中文目录即可 启动redis 启动redis要通过命 ...
- Mybatis 自动生成mapper文件
在pom.xml下的<build>内加入: <build> <plugins> <plugin> <groupId>org.mybatis. ...
- 国内4G频段划分
国内4G频段划分 2015年 4G网络建设如火如荼地进行,换手机大家几乎都买的4G手机,那么看到如下参数怎么知道手机所支持的网络呢? SIM 1:4G TDD-LTE:TD38/39/40/41: ...
- tensorflow源码分析——CTC
CTC是2006年的论文Connectionist Temporal Classification: Labelling Unsegmented Sequence Data with Recurren ...
- MySQL技术内幕 InnoDB存储引擎 之 InnoDB体系架构
后台线程 1.Master Thread 2.IO Thread 3.Purge Thread 4.Page Cleaner Thread 内存 重做日志在以下三种情况下将重做日志缓存中的内容刷新到 ...