实验吧(逆向):1000

题目

答案格式: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文件找线索

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值