buuctf [BJDCTF2020]JustRE wp

首先看一下是个exe文件,拉进EXEInfoPE看一下
在这里插入图片描述
是个32位exe文件无壳,打开看一下,果然是个恶趣味的出题人
在这里插入图片描述
怎么个恶趣味法,自己点点就知道,
在这里插入图片描述
大致猜测一波flag估计与这有关
然后拉近IDAx86看一下,看见winmain进去看一下伪代码,实在没有找到有用的线索

int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
  int result; // eax@1
  HACCEL v5; // esi@2
  struct tagMSG Msg; // [sp+8h] [bp-1Ch]@2

  LoadStringA(hInstance, 0x67u, WindowName, 100);
  LoadStringA(hInstance, 0x6Du, ClassName, 100);
  sub_4010C0(hInstance);
  result = sub_401150(hInstance, nShowCmd);
  if ( result )
  {
    v5 = LoadAcceleratorsA(hInstance, (LPCSTR)0x6D);
    while ( GetMessageA(&Msg, 0, 0, 0) )
    {
      if ( !TranslateAcceleratorA(Msg.hwnd, v5, &Msg) )
      {
        TranslateMessage(&Msg);
        DispatchMessageA(&Msg);
      }
    }
    result = Msg.wParam;
  }
  return result;
}

没有的话我们根据之前的打开的exe文件的窗口的线索,用快捷键shift+F12查看一下字符串

在这里插入图片描述
看到

.rdata:004064D4 0000000C C MessageBoxA               
.rdata:004064E0 0000000B C user32.dll                
.rdata:004067CC 0000000B C USER32.dll                
.rdata:00406AC6 0000000D C KERNEL32.dll              
.data:00407030  0000001B C  BJD{%d%d2069a45792d233ac}
.data:0040704C  00000023 C 您已经点了 %d 次,加油不要停下来!       
.data:00407108  00000005 C                           

这就不就是flag了嘛,赶紧点进去看一下伪代码

BOOL __stdcall DialogFunc(HWND hWnd, UINT a2, WPARAM a3, LPARAM a4)
{
  CHAR String; // [sp+0h] [bp-64h]@5

  if ( a2 != 272 )
  {
    if ( a2 != 273 )
      return 0;
    if ( (_WORD)a3 != 1 && (_WORD)a3 != 2 )
    {
      sprintf(&String, aNUDGmKGGb, ++dword_4099F0);
      if ( dword_4099F0 == 19999 )
      {
        sprintf(&String, aBjdDD2069a4579, 19999, 0);
        SetWindowTextA(hWnd, &String);
        return 0;
      }
      SetWindowTextA(hWnd, &String);
      return 0;
    }
    EndDialog(hWnd, (unsigned __int16)a3);
  }
  return 1;
}

穿插一下哈,不知道是不是我的原因,点进去不能F5直接查看伪代码,所以我稍微取巧一下了,看到它在sprintf()函数上面,我就点开它上面的函数,果然是,也能打开,交叉查看我的还是不能看伪代码,顺便提一下CTRL+X是查看交叉
有两个占位符 要填两个字符进去
aBjdDD2069a4579的值就是:BJD{%d%d2069a45792d233ac}
第一个%d应该是19999,第二个是0

flag也就是{1999902069a45792d233ac}
这道题明显比前面的简单,一起变强!!

加油哦!!!!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值