Jastes 2022. 4. 27. 10:08


์„œ๋ก 

์ด์ œ ์Šคํƒ ์˜ค๋ฒ„ ํ”Œ๋กœ์šฐ๋ฅผ ํ™œ์šฉํ•œ RET๋ฅผ ๋ณ€์กฐํ•ด ์…ธ์„ ํš๋“ํ•˜๋Š”.. ๊ทธ๋Ÿฐ
์›Œ๊ฒŒ์ž„์„ ํ•ด๋ด…์‹œ๋‹ค ์•„๋ž˜๋Š” ์˜ˆ์ œ์˜ˆ์š”

// Name: rao.c
// Compile: gcc -o rao rao.c -fno-stack-protector -no-pie
 
#include <stdio.h>
#include <unistd.h>
 
void init() {
  setvbuf(stdin, 0, 2, 0);
  setvbuf(stdout, 0, 2, 0);
}
 
void get_shell() {
  char *cmd = "/bin/sh";
  char *args[] = {cmd, NULL};
  execve(cmd, args, NULL);
}
 
int main() {
  char buf[0x28];
  init();
 
  printf("Input: ");
  scanf("%s", buf);
  return 0;
}

์ทจ์•ฝ์  ๋ถ„์„

ํ”„๋กœ๊ทธ๋žจ์˜ ์ทจ์•ฝ์ ์€ scanf("%s", buf)์— ์žˆ์Šต๋‹ˆ๋‹ค. scanfํ•จ์ˆ˜์˜ ํฌ๋งท ์ŠคํŠธ๋ง ์ค‘ ํ•˜๋‚˜์ธ
%s๋Š”
๋ฌธ์ž์—ด์„ ์ž…๋ ฅ๋ฐ›์„ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์œผ๋กœ, ์ž…๋ ฅ ๊ธธ์ด ์ œํ•œํ•˜์ง€ ์•Š์œผ๋ฉฐ
๊ณต๋ฐฑ ๋ฌธ์ž์ธ ๋„์–ด์“ฐ๊ธฐ, ํƒญ, ๊ฐœํ–‰ ๋ฌธ์ž ๋“ฑ์ด ๋“ค์–ด์˜ฌ ๋•Œ๊นŒ์ง€ ๊ณ„์† ์ž…๋ ฅ์„ ๋ฐ›๋Š”๋‹ค๋Š” ํŠน์ง•์ด ์ทจ์•ฝ์ !

 

์ด๋Ÿฐ ํŠน์ง•์œผ๋กœ ๋ฒ„ํผ ํฌ๊ธฐ๋ณด๋‹ค ํฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅ ์‹œ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ ๋ฐœ์ƒํ•จ
๋”ฐ๋ผ์„œ
scanf์—%s ํฌ๋งท ์ŠคํŠธ๋ง์€ ์‚ฌ์šฉX ์ •ํ™•ํžˆ n๊ฐœ์˜ ๋ฌธ์ž๋งŒ ์ž…๋ ฅ๋ฐ›๋Š” "%[n]s"์˜ ํ˜•ํƒœ๋กœ ์‚ฌ์šฉํ•˜์„ธ์š”

 

์ด์™ธ์—๋„, C/C++์˜ ํ‘œ์ค€ ํ•จ์ˆ˜ ์ค‘ ๋ฒ„ํผ๋ฅผ ๋‹ค๋ฃจ๋ฉด์„œ ๊ธธ์ด ์ œํ•œ์„ ์•ˆํ•˜๋Š” ํ•จ์ˆ˜๋Š” ๋Œ€๋ถ€๋ถ„ ์œ„ํ—˜์š”์†Œ๋กœ์จ,
๋Œ€ํ‘œ์ ์œผ๋กœ strcpy, strcat, sprinf๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ ์ž‘์„ฑ ์‹œ ๋ฒ„ํผ์˜ ํฌ๊ธฐ๋ฅผ ๊ฐ™์ด ์ž…๋ ฅํ•˜๋Š”
strncpy, strncat, snprintf, fgets, memcpy ๋“ฑ์ด ๋ฐ”๋žŒ์งํ•˜๋ฉฐ ๋’ค์— _s๋ฅผ ๋ถ™์ด๋Š” ๋ฐฉ๋ฒ•๋„ ์กด์žฌ!

 

์ด ์˜ˆ์ œ์—์„  ํฌ๊ธฐ๊ฐ€ 0x28(40byte)์ธ ๋ฒ„ํผ์— scanf("%s", buf)๋กœ ์ž…๋ ฅ ๋ฐ›์œผ๋ฏ€๋กœ BOF ํ•ด๋ด…์‹œ๋‹ค

๐Ÿ’กC/C++์˜ ๋ฌธ์ž์—ด ์ข…๊ฒฐ์ž(Terminator)์™€ ํ‘œ์ค€ ๋ฌธ์ž์—ด ํ•จ์ˆ˜๋“ค์˜ ์ทจ์•ฝ์„ฑ

 C๊ณ„์—ด ์–ธ์–ด๋Š” ๋„๋ฐ”์ดํŠธ("\x00")๋กœ ์ข…๋ฃŒ๋˜๋Š” ๋ฐ์ดํ„ฐ ๋ฐฐ์—ด์„ ๋ฌธ์ž์—ด๋กœ ์ทจ๊ธ‰ํ•˜๋ฉฐ,
๋ฌธ์ž์—ด์„ ๋‹ค๋ฃจ๋Š” ๋Œ€๋ถ€๋ถ„์˜ ํ‘œ์ค€ ํ•จ์ˆ˜๋Š” ๋„๋ฐ”์ดํŠธ๋ฅผ ๋งŒ๋‚  ๋•Œ๊นŒ์ง€ ์—ฐ์‚ฐ์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

 ๊ทธ๋ ‡๋‹ค๋ฉด ํ‘œ์ค€ ํ•จ์ˆ˜์—์„œ ์ œํ•œ์ด ๋˜๋Š” ๋„๋ฐ”์ดํŠธ๊ฐ€ ์—†์„ ๊ฒฝ์šฐ ๋ฌธ์ž์—ด ํ•จ์ˆ˜๋Š” ๋„๋ฐ”์ดํŠธ๋ฅผ 
์ฐพ์„ ๋•Œ๊นŒ์ง€ ๋ฐฐ์—ด์„ ์ฐธ์กฐํ•˜๋ฉฐ, ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ์ •์˜ํ•œ ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ ๋„˜์–ด์„œ๋„ ๊ณ„์† ์ธ๋ฑ์Šค ↑
์ด๋Ÿฐ ๋™์ž‘์œผ๋กœ ์ธํ•ด ์ธ๋ฑ์Šค ๊ฐ’์ด ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ณด๋‹ค ์ปค์ง€๋Š” ํ˜„์ƒ OOB(Index Out-Of-Bound)!

OOB๋Š” ์‹ฌ๊ฐํ•œ ๋ณด์•ˆ ๋ฌธ์ œ๋ฅผ ์•ผ๊ธฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ์ž์„ธํ•œ ๋ถ€๋ถ„์€ ๋’ค์—์„œ ๋ฐฐ์šฐ์ฃ 


ํŠธ๋ฆฌ๊ฑฐ๐Ÿ”ซ

์ทจ์•ฝ์ ์„ ๋ฐœํ˜„์‹œํ‚ค๋Š” ๊ฒƒ(ํ–‰์œ„)

์˜ˆ์ œ๋ฅผ ์ปดํŒŒ์ผ ํ›„ ์‹คํ–‰ํ•˜๊ณ  ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด๋ด…์‹œ๋‹ค 

ํ”„๋กœ๊ทธ๋žจ์ด ์ •์ƒ ์ข…๋ฃŒ๋˜์—ˆ์ฃ  ๊ทธ๋Ÿผ ์ด์   ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ํ•ด๋ณผ๊นŒ์š” 

์งง์€ ์ž…๋ ฅ๊ณผ ๋‹ฌ๋ฆฌ Segment fault๋ผ๋Š” ์—๋Ÿฌ ์ถœ๋ ฅ๋˜๋ฉฐ, ํ”„๋กœ๊ทธ๋žจ์ด ๋น„์ •์ƒ์  ์ข…๋ฃŒ๋˜์—ˆ์ฃ 
์ด๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์ž˜๋ชป๋œ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ์— ์ ‘๊ทผํ–ˆ๋‹ค๋Š” ์˜๋ฏธ๋ฉฐ, ํ”„๋กœ๊ทธ๋žจ์— ๋ฒ„๊ทธ ๋ฐœ์ƒ ์‹ ํ˜ธ!!
์ด ์—๋Ÿฌ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์—ฌ๊ธฐ์—์„œ..(์œ„ํ‚ค๋ฐฑ๊ณผ์˜ˆ์š”)

 

๋’ค์˜ (core dumped)๋Š” ์ฝ”์–ดํŒŒ์ผ(core)์„ ์ƒ์„ฑํ–ˆ๋‹ค๋Š” ๊ฒƒ์œผ๋กœ, ํ”„๋กœ๊ทธ๋žจ ๋น„์ •์ƒ ์ข…๋ฃŒ ์‹œ
๋””๋ฒ„๊น…์„ ๋•๊ธฐ ์œ„ํ•ด OS๊ฐ€ ์ƒ์„ฑํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ฝ”์–ด ํŒŒ์ผ์ด ์ƒ์„ฑ๋˜์ง€ ์•Š์•„์š”
 ๋ฆฌ๋ˆ…์Šค๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ฝ”์–ด ํŒŒ์ผ์˜ ํฌ๊ธฐ๋ฅผ ์ œํ•œํ•˜๊ธฐ์— ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ ์„ธ๊ทธ๋จผํŠธ ํดํŠธ๋ฅผ
๋ฐœ์ƒ์‹œํ‚ค๊ณ ๋„ ์ฝ”์–ดํŒŒ์ผ์ด ์ƒ์„ฑ์ด ์•ˆ๋œ๋‹ค๋ฉด ์ƒ์„ฑํ•  ์ฝ”์–ดํŒŒ์ผ์˜ ํฌ๊ธฐ๊ฐ€ ์ดˆ๊ณผํ–ˆ๋‹ค๋Š” ๋œป!

๋‹ค์Œ ์ปค๋งจ๋“œ๋‚˜ ๋ฐ‘์— ๋งํฌ๋ฅผ ํ†ตํ•ด ํ™•์ธํ•ด๋ณด์„ธ์š” ์ €๋„ ์ข€ ๋ฒ„๊ทธ๊ฐ€ ์žˆ๋”๋ผ๊ณ ์š”
ulimit -c unlimited

์ฝ”์–ด ํŒŒ์ผ ๋ถ„์„๐Ÿ”

gdb์—๋Š” ์ฝ”์–ด ํŒŒ์ผ์„ ๋ถ„์„ํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์žˆ์ฃ  ์ด๋ฅผ ํ†ตํ•ด ํ•˜๋‚˜์”ฉ ๋ถ„์„ํ•ด๋ด…์‹œ๋‹ค.

 

๋‹ค์Œ ๋ช…๋ น์–ด ์ฝ”์–ด ํŒŒ์ผ์„ ์—ฝ๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋žจ ์ข…๋ฃŒ์›์ธ์„ ํ™•์ธ์„ ๋‚˜ํƒ€๋‚ด๋ฉฐ,
์–ด๋–ค ์ฃผ์†Œ์˜ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋‹ค ๋ฌธ์ œ ๋ฐœ์ƒํ–ˆ๋Š”์ง€ ์•Œ๋ ค์คŒ

Context์—์„œ DISAM ์ฝ”๋“œ์™€ ์Šคํƒ์„ ๊ด€์ฐฐํ•˜๋ฉด, ํ”„๋กœ๊ทธ๋žจ์ด mainํ•จ์ˆ˜์—์„œ ๋ฐ˜ํ™˜ํ•˜๋ คํ•˜๋Š”๋ฐ,
์Šคํƒ ์ตœ์ƒ๋‹จ์— ์ €์žฅ๋œ ๊ฐ’์ด ์ž…๋ ฅ๊ฐ’์˜ ์ผ๋ถ€์ธ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ด๋Š” ์‹คํ–‰๊ฐ€๋Šฅํ•œ ๋ฉ”๋ชจ๋ฆฌ์˜ ์ฃผ์†Œ๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ ์„ธ๊ทธ๋จผํ…Œ์ด์…˜ ํดํŠธ ๋ฐœ์ƒ!!
์ด ๊ฐ’์ด ์›ํ•˜๋Š” ์ฝ”๋“œ ์ฃผ์†Œ๊ฐ€ ๋˜๋„๋ก ์ ์ ˆํ•œ ์ž…๋ ฅ์„ ์ฃผ๋ฉด, mainํ•จ์ˆ˜์—์„œ ๋ฐ˜ํ™˜ ์‹œ expoit ๊ฐ€๋Šฅ


์ต์Šคํ”Œ๋กœ์ž‡

1. ์Šคํƒ ํ”„๋ ˆ์ž„ ๊ตฌ์กฐ ํŒŒ์•…

์Šคํƒ ๋ฒ„ํผ์— ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๋ฅผ ๋ฐœ์ƒ ํ•ด ๋ฐ˜ํ™˜์ฃผ์†Œ๋ฅผ ๋ฎ์œผ๋ ค๋ฉด, ์šฐ์„  ํ•ด๋‹น ๋ฒ„ํผ๊ฐ€ ์Šคํƒ ํ”„๋ ˆ์ž„
์–ด๋””์— ์œ„์น˜ํ•˜๋Š”์ง€ ์กฐ์‚ฌํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ๋ฐ‘์— ์ด๋ฏธ์ง€๋ฅผ ๋ณด์‹ค๊นŒ์š”?

scanf ํ•จ์ˆ˜๊ฐ€ ์ทจ์•ฝํ•˜๋ฏ€๋กœ ๊ทธ ์ด์ „๊ฐ’๋งŒ ํ˜ธ์ถœํ•œ ๋ถ€๋ถ„์ชฝ์œผ๋กœ ๋“ค์–ด๊ฐ‘์‹œ๋‹น
๊ทธ๋ฆฌ๊ณ  ์ด๋ฅผ ์˜์‚ฌ ์ฝ”๋“œ๋กœ ํ‘œํ˜„ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค

scanf("%s", (rbp-0x30));

์ฆ‰, ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ฌ ๋ฒ„ํผ๋Š” rbp-0x30์— ์œ„์น˜ํ•ฉ๋‹ˆ๋‹ค.
์Šคํƒ ํ”„๋ ˆ์ž„์˜ ๊ตฌ์กฐ๋ฅผ ๋– ์˜ฌ๋ ค ๋ณด๋ฉด, rbp์— SFP๊ฐ€ ์ €์žฅ๋˜๊ณ , rbp+0x8์—๋Š” ๋ฐ˜ํ™˜ ์ฃผ์†Œ ์ €์žฅ๋จ

์ž…๋ ฅํ•  ๋ฒ„ํผ์™€ ๋ฐ˜ํ™˜ ์ฃผ์†Œ ์‚ฌ์ด์— 0x38๋งŒํผ์˜ ๊ฑฐ๋ฆฌ๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ, ๊ทธ๋งŒํผ์„ dummy data๋กœ ์ฑ„์šฐ๊ณ ,
์‹คํ–‰ํ•˜๊ณ ์ž ํ•˜๋Š” ์ฝ”๋“œ์˜ ์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์‹คํ–‰ ํ๋ฆ„์„ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ์Œ


get_shell() ์ฃผ์†Œ ํ™•์ธ

์ด ์˜ˆ์ œ์—์„  ์…ธ์„ ์‹คํ–‰ํ•ด์ฃผ๋Š” get_shell() ํ•จ์ˆ˜๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ,
์ด ํ•จ์ˆ˜์˜ ์ฃผ์†Œ๋กœ mainํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜ ์ฃผ์†Œ๋ฅผ ๋ฎ์–ด์„œ ์…ธ์„ ํš๋“ํ•  ์ˆ˜ ์žˆ์Œ

get_shell()์˜ ์ฃผ์†Œ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด gdb๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

get_shell()์˜ ์ฃผ์†Œ๊ฐ€ 0x401199์ž„์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.


ํŽ˜์ด๋กœ๋“œ ๊ตฌ์„ฑ

์ด์ œ expoit์— ์‚ฌ์šฉํ•  payload๋ฅผ ๊ตฌ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์‹œ์Šคํ…œ ํ•ดํ‚น์—์„œ ํŽ˜์ด๋กœ๋“œ๋Š” ๊ณต๊ฒฉ์„ ์œ„ํ•ด ํ”„๋กœ๊ทธ๋žจ์— ์ „๋‹ฌํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์˜๋ฏธ


์—”๋””์–ธ ์ ์šฉ

๊ตฌ์„ฑํ•œ ํŽ˜์ด๋กœ๋“œ๋Š” ์ ์ ˆํ•œ ์—”๋””์–ธ(Endian)์„ ์ ์šฉํ•ด ํ”„๋กœ๊ทธ๋žจ์— ์ „๋‹ฌํ•ด์•ผ ํ•ด์š”
์—”๋””์–ธ์€ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ •๋ ฌ๋˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ฃผ๋กœ
๋ฆฌํ‹€ ์—”๋””์–ธ(Little-Endian, LE)๊ณผ ๋น… ์—”๋””์–ธ(Big-Endian, BE)์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

๋ฆฌํ‹€ ์—”๋””์–ธ์—์„œ๋Š” ๋ฐ์ดํ„ฐ์˜ Most Significant Byte(MSB; ๊ฐ€์žฅ ์™ผ์ชฝ์˜ ๋ฐ”์ดํŠธ)๊ฐ€ ๊ฐ€์žฅ ๋†’์€ ์ฃผ์†Œ๋กœ
๋น… ์—”ํ‹ฐ์–ธ์—์„  ๋ฐ์ดํ„ฐ์˜ MSB๊ฐ€ ๊ฐ€์žฅ ๋‚ฎ์€ ์ฃผ์†Œ๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

 

์ต์Šคํ”Œ๋กœ์ž‡์„ ์ž‘์„ฑํ•  ๋• ๋Œ€์ƒ ์‹œ์Šคํ…œ์˜ ์—”๋””์–ธ์„ ๊ณ ๋ คํ•ด์•ผํ•˜๋Š” ์ด์œ ๊ฒ ์ฃ 
์ „ ๋ฆฌํ‹€ ์—”๋””์–ธ์ธ x64์•„ํ‚คํ…์ฒ˜ ๊ธฐ๋ฐ˜์„ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋ฏ€๋กœ 
get_shell()์˜ ์ฃผ์†Œ์ธ 0x401199๋Š” "\x99\x11\x40\x00\x00\x00\x00\x00"๋กœ ์ „๋‹ฌ ๋˜์•ผ๊ฒ ์ฃ 

// Name: endian.c
// Compile: gcc -o endian endian.c
 
#include <stdio.h>
 
int main() {
  unsigned long long n = 0x4005a7;
  printf("Low <-----------------------> High\n");
 
  for (int i = 0; i < 8; i++) printf("0x%hhx ", *((unsigned char*)(&n) + i));
  return 0;
}

์œ„ ์ฝ”๋“œ๋Š” ์–ด๋–ป๊ฒŒ ์ €์žฅ๋˜๋Š”์ง€ ํ™•์ธ ์šฉ๋„๊ฐ™๋„ค์š”
์ด์™•์ด๋ฉด ์ง์ ‘ ์งœ์‹œ๋Š”๊ฒƒ๋„ ์ข‹๊ณ  ๊ทธ๋ƒฅ ํ™•์ธ๋งŒ ํ•˜์…”๋„ ์ข‹์„ ๋“ฏ ํ•˜๋„ค์š”


์ต์Šคํ”Œ๋กœ์ž‡

์—”๋””์–ธ์„ ์ ์šฉํ•˜์—ฌ ํŽ˜์ด๋กœ๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ , ์ด๋ฅผ ๋‹ค์Œ ์ปค๋งจ๋“œ๋กœ rao์— ์ „๋‹ฌํ•˜๋ฉด ์…ธ ํš๋“!

$ (python -c "import sys;sys.stdout.buffer.write(b'A'*0x30 + b'B'*0x8 + b'\xa7\x05\x40\x00\x00\x00\x00\x00')";cat)| ./rao

์ทจ์•ฝ์  ํŒจ์น˜

์ทจ์•ฝ์ ์„ ๋ฐœ๊ฒฌํ•˜๋Š” ๋ฐฉ๋ฒ•๋งŒํผ ์ค‘์š”ํ•œ ๊ฒƒ์ด ์ทจ์•ฝ์  ํŒจ์น˜์ž…๋‹ˆ๋‹ค ์•ž์œผ๋กœ ๋ถ€์กฑํ•˜๋‚˜๋งˆ
์œ„ ๊ฐ•์˜ ์™ธ์— ๋ณดํ˜ธ๊ธฐ๋ฒ•๋„ ๊ธฐ์žฌํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค! ์ด๋ฒˆ์—” ๋‚ ๋จนํ• ๊ป˜์š” ํžˆํžˆ

 

rao

 

rao์—์„œ๋Š” ์œ„ํ—˜ํ•œ ๋ฌธ์ž์—ด ์ž…๋ ฅํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ทจ์•ฝ์ ์ด ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.
ํ•ด๋‹น ์ทจ์•ฝ์ ์„ ํŒจ์น˜ํ•˜๊ธฐ์œ„ํ•ด C์–ธ์–ด์—์„œ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๋ฌธ์ž์—ด ์ž…๋ ฅ ํ•จ์ˆ˜์™€ ํŒจํ„ด๋“ค์„ ์‚ดํŽด๋ณด๊ณ ,
๊ฐ๊ฐ์˜ ํŠน์ง•์„ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

Return Address Overwrite

Description Exploit Tech: Return Address Overwrite์—์„œ ์‹ค์Šตํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

dreamhack.io


์ฐธ๊ณ  ์ž๋ฃŒ

 

Exploit Tech: Return Address Overwrite

Return address overwrite ๊ณต๊ฒฉ์˜ ์›๋ฆฌ์™€ ๋ฐœ์ƒ ๊ฐ€๋Šฅํ•œ ํ”ผํ•ด๋ฅผ ๊ฐ„๋‹จํ•œ ์‹ค์Šต๊ณผ ํ•จ๊ป˜ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค.

dreamhack.io

 

Return Address Overwrite

Description Exploit Tech: Return Address Overwrite์—์„œ ์‹ค์Šตํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

dreamhack.io

๋”๋ณด๊ธฐ

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

 

Exploit Tech: Return Address Overwrite

Return address overwrite ๊ณต๊ฒฉ์˜ ์›๋ฆฌ์™€ ๋ฐœ์ƒ ๊ฐ€๋Šฅํ•œ ํ”ผํ•ด๋ฅผ ๊ฐ„๋‹จํ•œ ์‹ค์Šต๊ณผ ํ•จ๊ป˜ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค.

dreamhack.io