songining
article thumbnail
์Šคํƒ ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ ( Stack buffer Overflow )
Hacking/System Hacking 2022. 3. 31. 01:39

์Šคํƒ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ VS ์Šคํƒ ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ ์Šคํƒ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ : ์Šคํƒ์˜์—ญ์ด ๋„ˆ๋ฌด ๋งŽ์ด ํ™•์žฅ๋ผ์„œ ๋ฐœ์ƒํ•˜๋Š” ๋ฒ„๊ทธ ์Šคํƒ ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ : ์Šคํƒ์— ์œ„์น˜ํ•œ ๋ฒ„ํผ์— ๋ฒ„ํผ์˜ ํฌ๊ธฐ๋ณด๋‹ค ๋งŽ์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์ž…๋ ฅ๋˜์–ด ๋ฐœ์ƒํ•˜๋Š” ๋ฒ„๊ทธ (์Šคํƒ์˜ ๋ฒ„ํผ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ) ๋ฒ„ํผ(buffer)๋ž€? ๋ฐ์ดํ„ฐ๊ฐ€ ๋ชฉ์ ์ง€๋กœ ์ด๋™๋˜๊ธฐ ์ „์— ๋ณด๊ด€๋˜๋Š” ์ž„์‹œ ์ €์žฅ์†Œ ์Šคํƒ ๋ฒ„ํผ : ์Šคํƒ์— ์žˆ๋Š” ์ง€์—ญ๋ณ€์ˆ˜ ํž™ ๋ฒ„ํผ : ํž™์— ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ Ex1) ๋ฐ์ดํ„ฐ ๋ณ€์กฐ - ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๋กœ ์ธํ•ด ๋’ค์˜ ๋ฐ์ดํ„ฐ ๊ฐ’์„ ๋ณ€์กฐ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. Ex2) ๋ฐ์ดํ„ฐ ์œ ์ถœ c์–ธ์–ด์—์„œ ๋ฌธ์ž์—ด์˜ ๋์„ null๋กœ ์ธ์‹ํ•˜๋Š”๋ฐ ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๋ฅผ ํ†ตํ•ด null์„ ์—†์• ์ฃผ๋ฉด ๋’ค์˜ ๋ฐ์ดํ„ฐ๊นŒ์ง€ ํ•จ๊ป˜ ์ฝ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ด์ง„๋‹ค. Ex3) ์‹คํ–‰ํ๋ฆ„์กฐ์ž‘ ์˜ˆ๋ฅผ ๋“ค๋ฉด ํ•จ์ˆ˜์˜ ret์— ์ž์‹ ์ด ์‹คํ–‰ํ•˜๊ณ  ์‹ถ์€ ๋ช…๋ น..

Shellcode ๋ž€?
Hacking/System Hacking 2022. 3. 30. 01:54

์…ธ์ฝ”๋“œ๋ž€? -> ์ต์Šคํ”Œ๋กœ์ž‡์„ ์œ„ํ•ด ์ œ์ž‘๋œ ์–ด์…ˆ๋ธ”๋ฆฌ ์ฝ”๋“œ ์กฐ๊ฐ ์ผ๋ฐ˜์ ์œผ๋กœ ์…ธ์„ ํš๋“ํ•˜๋Š” ๊ฒƒ์ด ๋ชฉ์ ! ์–ด์…ˆ๋ธ”๋ฆฌ์–ด๋กœ ์ด๋ฃจ์–ด์ ธ์žˆ์Œ Ex) ํ•ด์ปค๊ฐ€ rip๋ฅผ ์ž์‹ ์ด ์ž‘์„ฑํ•œ ์…ธ์ฝ”๋“œ๋กœ ์˜ฎ๊ธฐ๋ฉด ํ•ด์ปค๊ฐ€ ์›ํ•˜๋Š” ์–ด์…ˆ๋ธ”๋ฆฌ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Œ orw ์…ธ์ฝ”๋“œ ์ž‘์„ฑ - ํŒŒ์ผ์„ ์—ด๊ณ  ์ฝ์€ ๋’ค ํ™”๋ฉด์— ์ถœ๋ ฅํ•ด์ฃผ๋Š” ์…ธ์ฝ”๋“œ! /** * /tmp/flag๋ฅผ ์ฝ๋Š” ์…ธ์ฝ”๋“œ */ char buf[0x30]; int fd = open("/tmp/flag", RD_ONLY, NULL); read(fd, buf, 0x30); // ํŒŒ์ผ ์ฝ๊ณ  buf์— ์ €์žฅ write(1, buf, 0x30); // buf ์— ์žˆ๋Š” ๊ฐ’ write ์œ„๋Š” ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“ค ์…ธ ์ฝ”๋“œ์˜ c์–ธ์–ด ์˜์‚ฌ์ฝ”๋“œ 1. int fd = open(“/tmp/flag”, O_RDONLY, NUL..

pwntools ์‚ฌ์šฉ๋ฒ•
Hacking/System Hacking 2022. 3. 28. 22:52

1. process & remote - process : ์ต์Šคํ”Œ๋กœ์ž‡์„ ๋กœ์ปฌ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํ•จ์ˆ˜ (ํ…Œ์ŠคํŠธ & ๋””๋ฒ„๊น… ์šฉ) - remote : ์›๊ฒฉ ์„œ๋ฒ„๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•  ๋•Œ ์‚ฌ์šฉ (์„œ๋ฒ„๋ฅผ ์‹ค์ œ ๊ณต๊ฒฉํ•˜๊ธฐ ์œ„ํ•จ) from pwn import * p = process('./test') #๋กœ์ปฌ ๋ฐ”์ด๋„ˆ๋ฆฌ 'test'๋ฅผ ๋Œ€์ƒ์œผ๋กœ ์ต์Šคํ”Œ๋กœ์ž‡ ์ˆ˜ํ–‰ p = remote('example.com',31337) #'example.com'์˜ 31337 ํฌํŠธ์—์„œ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋Œ€์ƒ์œผ๋กœ ์ต์Šคํ”Œ๋กœ์ž‡ ์ˆ˜ํ–‰ 2. send - send : ๋ฐ์ดํ„ฐ๋ฅผ ํ”„๋กœ์„ธ์Šค์— ์ „์†กํ•˜๊ธฐ์œ„ํ•ด ์‚ฌ์šฉ from pwn import * p = process('./test') p.send('A') # ./test์— 'A'๋ฅผ ์ž…๋ ฅ p.sendli..

article thumbnail
gdb ์‚ฌ์šฉ๋ฒ• ์ตํžˆ๊ธฐ
Hacking/System Hacking 2022. 3. 28. 20:49

gdb๋Š” ๋ฆฌ๋ˆ…์Šค์˜ ๋Œ€ํ‘œ์ ์ธ ๋””๋ฒ„๊ฑฐ์ค‘ ํ•˜๋‚˜! ELF - ๋ฆฌ๋ˆ…์Šค ์‹คํ–‰ ํŒŒ์ผ ํ˜•์‹ - ํฌ๊ฒŒ ํ—ค๋”์™€ ์—ฌ๋Ÿฌ ํ˜•์‹์œผ๋กœ ์ด๋ฃจ์–ด์ง --> ELF ์˜ ํ—ค๋”์— ์ง„์ž…์ (EP) ํ•„๋“œ ์กด์žฌ (OS๋Š” ELF๋ฅผ ์‹คํ–‰ํ•  ๋•Œ EP๋ถ€ํ„ฐ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰) //ํ•ด๋‹น ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์ง„์ž…์  ํ™•์ธ ๊ฐ€๋Šฅ //entry point address readelf -h debugee(ํŒŒ์ผ๋ช…) entry point address : 0x1060 gdb์—์„œ start ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์ง„์ž…์  ์ฃผ์†Œ๋ฅผ rip๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. gdb (gdb) start 1. registers : ๋ ˆ์ง€์Šคํ„ฐ์˜ ์ƒํƒœ๋ฅผ ๋ณด์—ฌ์คŒ 2. disasm : rip๋ถ€ํ„ฐ ์—ฌ๋Ÿฌ์ค„์— ๊ฑธ์ณ ๋””์Šค์–ด์…ˆ๋ธ”(๊ธฐ๊ณ„์–ด -> ์–ด์…ˆ๋ธ”๋ฆฌ)๋œ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์—ฌ์คŒ 3. stack : rsp๋ถ€ํ„ฐ ์—ฌ๋Ÿฌ์ค„์— ๊ฑธ์ณ..

X86 ์–ด์…ˆ๋ธ”๋ฆฌ ์ •๋ฆฌ
Hacking/System Hacking 2022. 3. 27. 14:00

dreamhack์„ ํ†ตํ•ด ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ ํฌ์ŠคํŠธ์ž…๋‹ˆ๋‹ค. ํ”ผ์—ฐ์‚ฐ์ž ์ข…๋ฅ˜ - ์ƒ์ˆ˜ - ๋ ˆ์ง€์Šคํ„ฐ - ๋ฉ”๋ชจ๋ฆฌ (BYTE(1), WORD(2), DWORD(4), QWORD(8)) ๋ฐ์ดํ„ฐ์˜ ์ด๋™ - MOV a, b => b์— ์žˆ๋Š” ๊ฐ’์„ a์— ๋Œ€์ž… - LEA a,b => b์˜ ์ฃผ์†Œ๊ฐ’์„ a์— ๋Œ€์ž… EX) mov eax, dword ptr ss:[ebp-4] ์˜ ๊ฒฝ์šฐ์—๋Š” [ebp-4]๊ฐ€ ํ•˜๋‚˜์˜ ์ฃผ์†Œ๋กœ ํ•ด๋‹น ์ฃผ์†Œ์˜ ๊ฐ’์„ eax์— ๋Œ€์ž…ํ•œ๋‹ค. lea eax, dword ptr ss:[ebp-4] ์˜ ๊ฒฝ์šฐ์—๋Š” mov eax, ebp ํ›„์— sub eax,4 ๋ฅผ ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™๋‹ค. +) [ ] ๊ธฐํ˜ธ๋Š” ์ฃผ์†Œ์˜ ์ฐธ์กฐ๊ฐ’์„ ์˜๋ฏธํ•˜๋ฉฐ [ ] ์•ˆ์—์„œ ์ฃผ์†Œ์˜ ์‚ฌ์น™ ์—ฐ์‚ฐ์ด ์ด๋ฃจ์–ด์ง„๋‹ค. ์‚ฐ์ˆ ์—ฐ์‚ฐ - add a,b => a= a+b - sub..

article thumbnail
[์‹œ์Šคํ…œ]ํ•จ์ˆ˜ ํ”„๋กค๋กœ๊ทธ, ์—ํ•„๋กœ๊ทธ
Hacking/System Hacking 2020. 8. 2. 16:44

ํ”„๋กค๋กœ๊ทธ(์‹œ์ž‘ ๋ถ€๋ถ„) 1. main()์—์„œ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ๋ณต๊ท€์ฃผ์†Œ, ์ฆ‰ RET๋ฅผ ์Šคํƒ์— ์ €์žฅํ•œ๋‹ค. 2. ์ด์ „ ํ•จ์ˆ˜์˜ ์Šคํƒ์˜ ์‹œ์ž‘์ (ebp)๋ฅผ ์Šคํƒ์— ์ €์žฅํ•œ๋‹ค. ํ†ต์ƒ์ ์œผ๋กœ SFP ๋ผ๊ณ  ๋งŽ์ด ๋ถˆ๋ฆฐ๋‹ค. ์ด๋Š” ํ•จ์ˆ˜๊ฐ€ ๋๋‚˜๊ณ  ๋‹ค์‹œ ๋Œ์•„๊ฐˆ ๋–„ ์Šคํƒ์„ ์˜จ์ „ํžˆ ๋ณต๊ตฌํ•˜๊ธฐ ์œ„ํ•จ์ด๋‹ค. 3. ebp๋ฅผ esp๊ฐ€ ์žˆ๋Š” ์œ„์น˜๋กœ ์ด๋™์‹œํ‚จ๋‹ค. 4. ์ง€์—ญ๋ณ€์ˆ˜ ํ• ๋‹น ๋“ฑ ์Šคํƒ์˜ ๊ธฐ๋Šฅ ์ˆ˜ํ–‰ ์—ํ•„๋กœ๊ทธ 1. esp๋ฅผ ebp์œ„์น˜๋กœ ๋ณด๋‚ธ๋‹ค. (์ง€์—ญ๋ณ€์ˆ˜ ์‚ญ์ œ/pop) 2. pop ebp => ์Šคํƒ์˜ ๊ผญ๋Œ€๊ธฐ ๊ฐ’์„ ebp์— ์ง‘์–ด๋„ฃ๋Š”๋‹ค. => ์ด์ „ ํ•จ์ˆ˜์˜ ebp 3. pop eip => ํ”„๋กœ๊ทธ๋žจ์˜ ํ๋ฆ„์„ RET๋กœ ๋„˜๊ธด๋‹ค. (eip๋Š” ๋‹ค์Œ ์‹คํ–‰ํ•  ๋ช…๋ น์–ด๋ฅผ ๋‹ด๋Š” ๋ ˆ์ง€์Šคํ„ฐ) ์ฐธ๊ณ : ARGOS ์‹œ์Šคํ…œํ•ดํ‚น ๊ต์œก์ž๋ฃŒ

article thumbnail
[์‹œ์Šคํ…œ]์–ด์…ˆ๋ธ”๋ฆฌ์–ด ๊ธฐ์ดˆ, ๋ช…๋ น์–ด ์ •๋ฆฌ
Hacking/System Hacking 2020. 8. 2. 16:42

rax rbx rcx rdx rsi rdi rbp r8 r9 r10 r11 r12 r13 r14 r15 rsp rip ๋ฒ”์šฉ ๋ ˆ์ง€์Šคํ„ฐ ์šฉ๋„๊ฐ€ ํŠน๋ณ„ํ•˜๊ฒŒ ์ •ํ•ด์ง€์ง€ ์•Š์€ ๋ ˆ์ง€์Šคํ„ฐ๋กœ, ๋ณ€์ˆ˜์™€ ๊ฐ™์€ ์—ญํ• ์„ ํ•œ๋‹ค. ์šฉ๋„๊ฐ€ ์ •ํ•ด์ ธ ์žˆ์ง€ ์•Š์ง€๋งŒ ๋•Œ์— ๋”ฐ๋ผ ๊ทธ ์“ฐ์ž„์ƒˆ๊ฐ€ ์ •ํ•ด์ ธ ์žˆ๋Š” ๊ฒฝ์šฐ๋„ ์กด์žฌ (rax๋Š” ํ•จ์ˆ˜ ๋ฆฌํ„ด๊ฐ’ rsi๋Š” ํ•จ์ˆ˜ ํŒŒ๋ผ๋ฉ”ํ„ฐ) ํ•จ์ˆ˜ ํ˜ธ์ถœ ๊ทœ์•ฝ ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋  ๋•Œ ํ•„์š”ํ•œ ์ธ์ž๋“ค์„ ์ €์žฅํ•˜๋Š” ๋ ˆ์ง€์Šคํ„ฐ๋„ ์กด์žฌํ•œ๋‹ค. (rdi rsi rcx rdx ...) ์Šคํƒํฌ์ธํ„ฐ ์Šคํƒ์˜ ๊ฐ€์žฅ ์œ„์ชฝ์„ ๊ฐ€๋ฆฌํ‚จ๋‹ค. ์Šคํƒ์€ ํ•จ์ˆ˜๊ฐ€ ์‚ฌ์šฉํ•  ์ง€์—ญ ๋ณ€์ˆ˜๋“ค์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ์ค€๋น„ํ•ด๋†“์€ ๊ณต๊ฐ„์ด๋‹ค. (rsp) ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ rip๋Š” ํ”„๋กœ๊ทธ๋žจ์นด์šดํ„ฐ์˜ ์—ญํ• ์„ ํ•œ๋‹ค. ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ๋Š” ๋‹ค์Œ์— ์‹คํ–‰๋  ๋ช…๋ น์–ด๊ฐ€ ์œ„์น˜ํ•œ ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค. mov a, b b๋ฅผ ..

article thumbnail
[์‹œ์Šคํ…œ]Buffer Overflow
Hacking/System Hacking 2020. 8. 2. 16:41

์ด๋ฒˆ์—” ๋™์•„๋ฆฌ ๊ต์œก์—์„œ ๋ฒ„ํผ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ์— ๋Œ€ํ•ด ๋ฐฐ์› ๋‹ค. ๊ธฐ๋ณธ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ ์ฃผ์–ด์ง„ ์˜์—ญ์„ ๋„˜์–ด ๊ฐ’์„ ๋” ๋„ฃ์„ ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋Š” ์ทจ์•ฝ์  Ex) getsํ•จ์ˆ˜๋Š” ์ž…๋ ฅ๊ฐ’์„ ๊ณ„์†ํ•ด์„œ ๋ฐ›์„ ์ˆ˜ ์žˆ๊ณ  ๊ฐ๊ฐ์˜ ๋ณ€์ˆ˜๋“ค์€ ์—ฐ์†๋œ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋˜์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์— bof์— ๋Œ€ํ•œ ์ž…๋ ฅ์„ ํฌ๊ธฐ 4์ด์ƒ์œผ๋กœ ์ž…๋ ฅํ–ˆ์„๋•Œ target์˜ ๊ฐ’์œผ๋กœ ์นจ๋ฒ”ํ•˜๊ฒŒ ๋œ๋‹ค. ์ด๊ฒƒ์ด ๋ฐ”๋กœ ๋ฒ„ํผ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ์ด๋‹ค. (๋ณ€์ˆ˜๋“ค์€ ์—ฐ์†๋œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ํ• ๋‹น๋˜๋Š”๋ฐ ์ด ์ˆœ์„œ๋Š” ๋ฐ”์ดํŠธ ํฌ๊ธฐ์ˆœ์ธ๊ฐ€??) ์ฐธ๊ณ : ARGOS ์‹œ์Šคํ…œํ•ดํ‚น ๊ต์œก์ž๋ฃŒ

[์‹œ์Šคํ…œ] ์–ด์…ˆ๋ธ”๋ฆฌ์–ด, GDB
Hacking/System Hacking 2020. 8. 2. 16:40

์–ด์…ˆ๋ธ”๋ฆฌ์–ด ๊ธฐ๊ณ„์–ด์™€ ์ผ๋Œ€์ผ ๋Œ€์‘๋˜๋Š” ์–ธ์–ด. ์‹คํ–‰ํŒŒ์ผ๋งŒ ์žˆ์–ด๋„ ์–ด์…ˆ๋ธ”๋ฆฌ ์ฝ”๋“œ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์ด์ง„์ˆ˜๋กœ ๋œ ๊ธฐ๊ณ„์–ด๋ฅผ "๋””์ปดํŒŒ์ผ๋Ÿฌ" ๋ฅผ ์ด์šฉํ•˜์—ฌ ์–ด์…ˆ๋ธ”๋ฆฌ์–ด๋กœ ๋œ ์ฝ”๋“œ๋ฅผ ์–ป์–ด๋‚ด๊ณ , ์ด๋ฅผ ๋ถ„์„ํ•œ๋‹ค. ๋””๋ฒ„๊ฑฐ GDB(GNU Debugger) C, C++ ๋“ฑ์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ์‹คํ–‰ ํŒŒ์ผ์„ ๋””๋ฒ„๊น…ํ•˜๋Š” ๋„๊ตฌ 1. ์‹œ์ž‘/์ข…๋ฃŒ ์‹œ์ž‘: gdb [ํ”„๋กœ๊ทธ๋žจ๋ช…] ์ข…๋ฃŒ: quit or q 2. ๋ฌธ๋ฒ• ๋ณ€๊ฒฝ set disassembly-flavor intel 3. ๋ถ„์„ ํ•ด๋‹น ํ•จ์ˆ˜ ์ฝ”๋“œ: disas [ํ•จ์ˆ˜์ด๋ฆ„] ์‹คํ–‰ : run or r ๋ธŒ๋ ˆ์ดํฌ ํฌ์ธํŠธ : b [์ง€์ ] ๋ธŒ๋ ˆ์ดํฌ ํฌ์ธํŠธ ๊ฑธ๋ฆฐ ์œ„์น˜ ์ฝ”๋“œ : disas ๋ธŒ๋ ˆ์ดํฌ ํฌ์ธํŠธ ๋‹ค ์ง€์šฐ๊ธฐ: d or dis ๋‹ค์Œ ๋ช…๋ น์–ด : ni ์ง„ํ–‰ : c ๊ฐ•์ œ ์ ํ”„ : jump [์œ„์น˜] -> ํ•จ์ˆ˜, ํ–‰, ๋ฉ”๋ชจ..