题目
答案格式:CTF{}
解题链接: http://ctf5.shiyanbar.com/misc/1000.exe
运行截图,1000有特殊含义:
运行程序之后,发现生成了一张图片 tip.jpg :
可疑区:
函数入口 WinMain(没用):
找到获取输入内容的函数 GetWindowTextA :
找到设置函数,但是没有用因为找不到 lpString:
void __stdcall AfxSetWindowText(HWND hWnd, LPCSTR lpString)
{
unsigned int v2; // esi
CHAR String; // [esp+4h] [ebp-100h]
v2 = lstrlenA(lpString); // 获取字符串长度,关键就是lpString
if ( v2 > 256 || GetWindowTextA(hWnd, &String, 256) != v2 || lstrcmpA(&String, lpString) )// GetWindowTextA将字符复制到String中,最大长度为256,
// 运行成功,返回值是不包含结尾NULL字符的字符串长度;
// 如果标题栏为空,又如果给定的句柄是无效的,那么返回值是0
// lstrcmp 的比较区分大小写,前者大就返回正,后者大返回负,相等返回0
SetWindowTextA(hWnd, lpString);
}
动态分析 根据jpeg找到程序指令,下断点。
根据1000就是数字8的消息找到,运行程序会有弹窗,锁定到 MessageBox 函数下断点,但是这个断点没有断,也不知道什么原因,没办法继续分析了。
搞了半天没有发现,最终的看了一下writeup,发现在用户文件夹下的收藏夹里。
加上最后的Y就对了, CTF{G00dTh1sIskeY}
整理一下思路:
1、发现弹窗,寻找弹窗函数
2、根据jpg文件找线索