“百度杯”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大本营 题目一开始就提醒我们是注入,查看源码还给出了查询语句 输入测试语句发现服务器端做了过滤,一些语句被过滤了 试了一下/**/.+都不行,后来才发现可以用<>绕过 接 ...
随机推荐
- BZOJ 4289: PA2012 Tax Dijkstra + 查分
Description 给出一个N个点M条边的无向图,经过一个点的代价是进入和离开这个点的两条边的边权的较大值,求从起点1到点N的最小代价.起点的代价是离开起点的边的边权,终点的代价是进入终点的边的边 ...
- 如何将python源文件打包成exe文件
PyInstaller是一个十分有用的第三方库,它能够在Windows.Linux.Mac OS X 等操作系统下将 Python 源文件打包,通过对源文件打包,Python 程序可以在没有安装 Py ...
- Hbase meta 表异常修复
Hbase meta表异常修复 标签(空格分隔): Hbase 一,Hbase meta元数据表 1.1 背景 线上Hbase 因为在hbase shell中清空 truncate 'table'一张 ...
- android存储路径问题
关于存储路径问题,如果是想要存储在应用本身的路径下,如果该应用卸载的时候,对应文件随之卸载, 如果使用的是android level 8以上的版本,采用的是: getExternalFilesDir( ...
- Oracle dba角色和sysdba的区别
如果用户需要远程sysdba的方式登陆,需要grant sysdba权限,登陆后以sys用户执行命令,需要验证密码文件. 密码文件如果是从12c之前的老版本同步过来,需要重建12c格式的密码文件. d ...
- jprofiler监控wls&was配置
jprofiler简介: jprofiler的内存视图部分可以提供动态的内存使用状况更新视图和显示关于内存分配状况信息的视图.所有的视图都有几个聚集层并且能够显示现有存在的对象和作为垃圾回收的对象. ...
- 条形码(barcode)code128生成代码
条形码(barcode)code128生成代码 很简单 多些这位兄弟https://bbs.csdn.net/topics/350125614 下面是我的DEMO 直接放到VS2005下面编译即可 # ...
- ssm的自动类型转换器
1.jsp页面将String 转换成employee类型 <form action="testConversionServiceConverer" method=" ...
- nginx请求转发配置
以下为无ssl证书配置的请求转发 server { listen ; server_name api.****.com; #以下为指定请求域名匹配到某一个端口 #location ~* /union ...
- 杂项-PIN:百科
ylbtech-杂项-PIN:百科 个人身份识别码(英语:Personal identification number,缩写为 PIN),又译为用户个人识别号码,常被称为PIN码(PIN number ...