728x90

What is Pwnable?

Basic System Hacking โ–ถ Wanna get /bin/sh(shell)


shell?

:์‚ฌ์šฉ์ž์™€ ์ปค๋„ ๊ฐ„์˜ ์ธํ„ฐํŽ˜์ด์Šค ์—ญํ• 

  • ๋ช…๋ น์–ด์™€ ์ปค๋„์ด ๋Œ€ํ™”๋ฅผ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ฃผ๋Š” ์ผ์ข…์˜ ์ธํ„ฐํŽ˜์ด์Šค
  • ๋ช…๋ น์–ด ํ•ด์„๊ธฐ
  • ์œ ์ €๊ฐ€ ์…ธ(๋ช…๋ น์–ด ํ•ด์„๊ธฐ)์— ๋ช…๋ น์„ ์ „๋‹ฌํ•˜๋ฉด ์…ธ์ด ์ปค๋„ํ•œํ…Œ ๋ถ€ํƒํ•˜๊ณ , ์ปค๋„์ด ๋‚ด๋ถ€์ ์ธ ์ž‘์—…์„ ์‹คํ–‰ํ•œ ํ›„ ์ด ๊ฒฐ๊ณผ๋ฅผ ๋‹ค์‹œ ์…ธ์„ ํ†ตํ•ด ์œ ์ €์—๊ฒŒ๋กœ ์ „๋‹ฌํ•œ๋‹ค.
  • ์ฐธ๊ณ ์ž๋ฃŒ


Shell์„ ํƒˆ์ทจํ–ˆ์„ ๋•Œ ์œ„ํ—˜ํ•œ ์ด์œ 

  • /etc/passwd ํŒŒ์ผ: ์‚ฌ์šฉ์ž ์ •๋ณด ์ €์žฅ๋œ ํŒŒ์ผ (root๋งŒ ์ˆ˜์ • ๊ฐ€๋Šฅ)
  • /etc/shadow ํŒŒ์ผ: ์‚ฌ์šฉ์ž PW ํ•ด์‹œ๊ฐ’์ด ์ €์žฅ๋œ ํŒŒ์ผ
    • $algorithm_id$salt$encrypted_passwd

Architecture & Register

x86-64 Architecture

  • ISA: CPU์˜ ๋ช…๋ น์–ด์— ๋Œ€ํ•œ ์„ค๊ณ„
  • n bit Architecutre
    • WORD: CPU๊ฐ€ ํ•œ ๋ฒˆ์— ์ฒ˜๋ฆฌํ•   ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ (ex: bus ๋Œ€์—ญํญ)

 

  • 32bit ๊ตฌ์กฐ(x86), 64bit ๊ตฌ์กฐ(x86-64, x64)

x86 vs x64


๋ฒ”์šฉ ๋ ˆ์ง€์Šคํ„ฐ


๋ฒ”์šฉ ๋ ˆ์ง€์Šคํ„ฐ ์‚ฌ์šฉ ์˜ˆ์‹œ

  • 64bit ํ™˜๊ฒฝ์—์„œ๋Š” ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ํ•จ์ˆ˜์˜ ์ธ์ž๋กœ ์ „๋‹ฌ
  • read(0, 0x7f2...000, 0x1000) // rdi, rsi, rdx

๋ ˆ์ง€์Šคํ„ฐ ์ •๋ณด ํ™•์ธํ•˜๊ธฐ ๋ฐ ๋ ˆ์ง€์Šคํ„ฐ ํ˜ธํ™˜


Linux Memory Layout

์ฐธ๊ณ ์ž๋ฃŒ

 

  • ์ฝ”๋“œ ์„ธ๊ทธ๋จผํŠธ(ํ…์ŠคํŠธ ์„ธ๊ทธ๋จผํŠธ): ์ฝ”๋“œ ์ €์žฅ (R,X)
  • ๋ฐ์ดํ„ฐ ์„ธ๊ทธ๋จผํŠธ(data, rodata): ์ƒ์ˆ˜, ์ „์—ญ ๋ณ€์ˆ˜์ €์žฅ (R, W)
  • BSS ์„ธ๊ทธ๋จผํŠธ: ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š์€ ๋ณ€์ˆ˜ ์ €์žฅ (์ดˆ๊ธฐ์— ๋‹ค 0์œผ๋กœ ์ดˆ๊ธฐํ™”๋จ)
  • ํž™ ์„ธ๊ทธ๋จผํŠธ: malloc ๋“ฑ์œผ๋กœ ๋™์ ํ• ๋‹นํ•œ ๋ฉ”๋ชจ๋ฆฌ
  • ์Šคํƒ ์„ธ๊ทธ๋จผํŠธ: ์ง€์—ญ๋ณ€์ˆ˜, ๋ ˆ์ง€์Šคํ„ฐ, ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์ •๋ณด ๋“ฑ ์ €์žฅ

 

*์ฝ”๋“œ์˜์—ญ → ์Šคํƒ์˜์—ญ์œผ๋กœ ๊ฐˆ์ˆ˜๋ก ์ฃผ์†Œ๊ฐ€ ๋†’์•„์ง„๋‹ค.


์„ธ๊ทธ๋จผํŠธ ๋ณ„ ๊ถŒํ•œ ํ™•์ธ


Calling Convention

Stack Frame?

  • ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋  ๋•Œ, ๊ทธ ํ•จ์ˆ˜๋งŒ์˜ ์Šคํƒ ๊ณต๊ฐ„์„ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ƒ๊ธฐ๋Š” ๊ณต๊ฐ„

cdecl

  • x86 (32bit Architecture)์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํ•จ์ˆ˜ ํ˜ธ์ถœ ๊ทœ์•ฝ
  • callee๊ฐ€ ์•„๋‹Œ caller๊ฐ€ '์ธ์ž'๋ฅผ ์ •๋ฆฌ


sysv

  • x64 (64bit Architecture)์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํ•จ์ˆ˜ ํ˜ธ์ถœ ๊ทœ์•ฝ
  1. 6๊ฐœ์˜ ์ธ์ž๋ฅผ RDI, RSI, RDX, RCX, R8, R9์— ์ˆœ์„œ๋Œ€๋กœ ์ €์žฅํ•˜์—ฌ ์ „๋‹ฌ. (๋” ๋งŽ์€ ์ธ์ž๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•  ๋•Œ๋Š” ์Šคํƒ์„ ์ถ”๊ฐ€๋กœ ์ด์šฉ)
  2. callee prolog
  3. callee epilog
  4. Caller์—์„œ ์ธ์ž ์ „๋‹ฌ์— ์‚ฌ์šฉ๋œ ์Šคํƒ์„ ์ •๋ฆฌ.
  5. ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜ ๊ฐ’์€ RAX๋กœ ์ „๋‹ฌ

callee(123456789, 2, 3, 4, 5, 6, 7)


Stack frame์˜ ๋ณ€ํ™” ๊ณผ์ •


GDB

ELF

  • ๋ฆฌ๋ˆ…์Šค ์‹คํ–‰ํŒŒ์ผ ํ˜•์‹ ELF(Executable and Linkable Format)
  • ELF๋Š” ํ—ค๋”์™€ ์—ฌ๋Ÿฌ ์„น์…˜๋“ค๋กœ ๊ตฌ์„ฑ
    • ํ—ค๋”: ์‹คํ–‰์— ํ•„์š”ํ•œ ์ •๋ณด๋“ค
    • ์„น์…˜: ์ปดํŒŒ์ผ๋œ ๊ธฐ๊ณ„์–ด ์ฝ”๋“œ, ํ”„๋กœ๊ทธ๋žจ ๋ฌธ์ž์—ด ๋“ฑ์˜ ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ

 

 

 

 

 

 

 

 

 

 

 

 

 

'EVI$ION > 7th' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[EVI$ION] #4 - Reversing 1  (0) 2024.11.07
[EVI$ION] #3 - Digital Forensic Assignment  (5) 2024.10.06
[EVI$ION] #2 - Web Hacking Assignment  (1) 2024.09.26
[EVI$ION] #1 - Web Hacking Assignment  (1) 2024.09.19

+ Recent posts