码迷,mamicode.com
首页 > 其他好文 > 详细

XCTF_RE_csaw2013reversing2_WP

时间:2021-02-02 11:08:13      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:heapalloc   center   tca   editable   tin   修改   textarea   add   wrap   

先运行一下程序,发现flag是一串乱码,还好知道这个re题,不然又是一顿乱操作(爬。

技术图片

很快找到主函数,F5反编译。

 
 
 
xxxxxxxxxx
 
 
 
 
int __cdecl __noreturn main(int argc, const char **argv, const char **envp)
{
  int v3; // ecx
  CHAR *lpMem; // [esp+8h] [ebp-Ch]
  HANDLE hHeap; // [esp+10h] [ebp-4h]
?
  hHeap = HeapCreate(0x40000u, 0, 0);//win32函数创建堆
  lpMem = (CHAR *)HeapAlloc(hHeap, 8u, MaxCount + 1);//win32为堆申请空间
  memcpy_s(lpMem, MaxCount, &unk_409B10, MaxCount);//猜测将unk_409b10赋值给堆lpMem
  if ( sub_40102A() || IsDebuggerPresent() )//第二个函数是判断是否被调试如果被调试就返回非零。
  {
    __debugbreak();//暂停程序执行,打开调试器,进入调试模式。(不知道做什么用的)
    sub_401000(v3 + 4, lpMem);
    ExitProcess(0xFFFFFFFF);
  }
  MessageBoxA(0, lpMem + 1, "Flag", 2u);//win32释放一个标题为“Flag”,内容为lpMem+1的文本框
  HeapFree(hHeap, 0, lpMem);//释放空间
  HeapDestroy(hHeap);//销毁对象
  ExitProcess(0);
}
 

不妨看一下其他的函数。

 
 
 
xxxxxxxxxx
 
 
 
 
int sub_40102A()
{
  char v0; // t1
?
  v0 = *(_BYTE *)(*(_DWORD *)(__readfsdword(0x18u) + 48) + 2);
  return 0;
}//一定返回0
 

那么正常打开的情况下条件语句中的代码没有被执行。那么我们不妨直接看一下lpMem(即unk_409b10)的内容:

技术图片

显然是符合乱码的。

接下来看一下分支语句中的函数:

 
 
 
xxxxxxxxxx
 
 
 
 
unsigned int __fastcall sub_401000(int a1, char *a2)
{
  int v2; // esi
  char *v3; // eax
  unsigned int v4; // ecx
  unsigned int result; // eax
?
  v2 = dword_409B38;
  v3 = &a2[strlen(a2 + 1) + 2];
  v4 = 0;
  result = ((unsigned int)(v3 - (a2 + 2)) >> 2) + 1;
  if ( result )
  {
    do
      *(_DWORD *)&a2[4 * v4++] ^= v2;//划重点!!!
    while ( v4 < result );
  }
  return result;
}
 

这里对lpMem的内容进行了修改,应该就是解密函数。所以我们需要做的就是让这一步运行。

这里我们启用OD(ollydebug)。

先用中文搜索引擎+智能搜索选择"Flag“来快速定位到我们的函数(直接到达的位置应为00C810A7,向上翻即可)

技术图片

接下来我们应该做什么?修改程序运行流程,做如下图所示的三处修改:

1.抹除判断语句的跳转

2.抹除int3的异常

3.跳入第二个MassageBox()

技术图片

Finally,you get it!

技术图片

另外附上使用IDA调试的方法。

XCTF_RE_csaw2013reversing2_WP

标签:heapalloc   center   tca   editable   tin   修改   textarea   add   wrap   

原文地址:https://www.cnblogs.com/BlankSpace/p/14357898.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!