看啥推荐读物
专栏名称: 星盟安全
星盟安全工作室---“VENI VIDI VICI”(我来,我见,我征服),我们的征途是星辰大海。从事各类安全研究,专注于知识分享。
今天看啥  ›  专栏  ›  星盟安全

鹏城杯2023 Writeup --Polaris战队

星盟安全  · 公众号  ·  · 2023-11-05 13:02
1PWN6502一道 VM 题,其中主要关注 LDA 和 STA 这两个访存指令,其中立即数寻址的偏移是 8 位无符号数,无法造成溢出,但是可以读写内存mem_ptr。__int64 __fastcall get_mem(unsigned __int16 a1){  if ( DEBUG )    fprintf(stderr, "(get_mem) reading at: 0x%X\n", a1);  if ( a1 0xFFu )    return *(unsigned __int8 *)(mem_ptr + a1);  if ( a1 0x1FFu )    return *(unsigned __int8 *)(mem_ptr + a1 - 256 + 256);  if ( a1 > 0xFFF9u )    return *(unsigned __int8 *)(mem_ptr + a1 - 65018 + 512);  if ( DEBUG )    fprintf(stderr, "(get_mem) parsed: 0x%X\n", (unsigned int)a1 - 512);  return *(unsigned __int8 *)(mem_ptr + (__int16)(a1 - 512) + 518);}__int64 __fastcall write_mem(unsigned __int16 a1, char a2){  if ( a1 > 0xFFu )  {    if ( a1 > 0x1FFu )    {      if ( a1 0xFFF9u )        *(_BYTE *)(mem_ptr + (__int16)(a1 - 512) + 518) = a2;      else        *(_BYTE *)(mem_ptr + a1 - 65018 + 512) = a2;    }    else    {     ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照