SlideShare a Scribd company logo
1 of 36
Download to read offline
Hotel-California
๋ฌธ์ œ ์„ค๋ช…
You know the rules: you can check out any time you like but you can never leave!
(flag in /FLAG.txt)
โ€ข hotelcalifornia.quals2019.oooverflow.io 7777
Files:
โ€ข hotel_california
โ€ข x86-64 shellcode, Intel TSX
์ฃผ์–ด์ง„ ๊ฒƒ
ELF ์‹คํ–‰ ํŒŒ์ผ
์‰˜์ฝ”๋“œ (shell-code)
โ€ข ์ทจ์•ฝ์ ์„ ๊ณต๊ฒฉํ•˜๊ธฐ ์œ„ํ•ด ์„œ๋ฒ„์— ๋ณด๋‚ด ์‹คํ–‰ํ•˜๋Š” ์ฝ”๋“œ
โ€ข ์–ด์…ˆ๋ธ”๋ฆฌ์–ด๋กœ ์ž‘์„ฑ
x31xc0_x50_x68x2fx2fx73x68_x68...
xor eax,eax push eax push โ€˜//shโ€™ (0x68732f2f) push ...
ํ”„๋กœ๊ทธ๋žจ ๋ถ„์„
๋ฌธ์ œ์˜ ํ๋ฆ„
1. ์‰˜์ฝ”๋“œ๋ฅผ ์ž…๋ ฅ๋ฐ›๊ณ 
2. ๋ ˆ์ง€์Šคํ„ฐ๋“ค์„ 0์œผ๋กœ ์„ธํŒ…ํ•œ ๋’ค
3. ์‹คํ–‰ (๋ฐ˜๋ณต)
๋ฌธ์ œ์˜ ํ๋ฆ„
1. ์‰˜์ฝ”๋“œ๋ฅผ ์ž…๋ ฅ๋ฐ›๊ณ 
2. ๋ ˆ์ง€์Šคํ„ฐ๋“ค์„ 0์œผ๋กœ ์„ธํŒ…ํ•œ ๋’ค
3. ์‹คํ–‰ (๋ฐ˜๋ณต)
๋ฌธ์ œ์˜ ํ๋ฆ„
1. ์‰˜์ฝ”๋“œ๋ฅผ ์ž…๋ ฅ๋ฐ›๊ณ 
2. ๋ ˆ์ง€์Šคํ„ฐ๋“ค์„ 0์œผ๋กœ ์„ธํŒ…ํ•œ ๋’ค
3. ์‹คํ–‰ (๋ฐ˜๋ณต)
๋ฌธ์ œ์˜ ํ๋ฆ„
1. ์‰˜์ฝ”๋“œ๋ฅผ ์ž…๋ ฅ๋ฐ›๊ณ 
โ€ข ๋‚œ์ˆ˜ r1, r2๋ฅผ ์ƒ์„ฑ
โ€ข ์ฝ”๋“œ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ ์ƒ์— ๋ฐฐ์น˜
user input (shellcode)
~1024 bytes
r1
4 bytes
stub code
65 bytes
์—ฌ๊ธฐ์„œ๋ถ€ํ„ฐ ์‹คํ–‰
stub code
โ€ข ์ž…๋ ฅํ•œ ์‰˜์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๊ธฐ ์ „, ๊ณ ์ •๋œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰
๐Ÿ’ฃ
r1
stub
๐Ÿ’ฃ
r1
stub
1. rdi := &rand
rax, rcx, rdx, rsi := 0
๐Ÿ’ฃ
r1โŠ•r2
stub
2. start HLE (xacquire) after
[rand] := r1 โŠ• r2(ebx)
3. if in HLE (xtest)
run my code
else (aborted during HLE)
return immediately
Intel TSX
โ€ข Transactional Synchronization Extensions
โ€ข Intel CPU์˜ ์ƒˆ๋กœ์šด ๋ช…๋ น์–ด ์ง‘ํ•ฉ
โ€ข xacquire - xrelease / xbegin - xend / xtest
โ€ข Transactional memory์˜ ํ•˜๋“œ์›จ์–ด ๋ ˆ๋ฒจ ๊ตฌํ˜„
(์ค‘๋žต)
Intel TSX
โ€ข ๊ธฐ๋ณธ์ ์ธ ์ปจ์…‰ (DB์™€ ๋น„์Šทํ•จ)
โ€ข โ€ํŠธ๋žœ์žญ์…˜โ€์„ ์‹œ์ž‘ ํ›„
โ€œ์ปค๋ฐ‹โ€์„ ํ•˜๊ธฐ ์ „๊นŒ์ง€์˜ ๋ชจ๋“  ์—ฐ์‚ฐ์„ CPU์—์„œ ๊ธฐ๋ก
โ€ข ์ค‘๊ฐ„์— โ€œ์ทจ์†Œโ€๋ฅผ ํ•˜๋ฉด ํ•ด๋‹น ์—ฐ์‚ฐ๋“ค์ด ๋ฒ„๋ ค์ง€๊ณ , ๊ฒฐ๊ณผ๋Š” ๋ฐ˜์˜์ด ์•ˆ ๋จ
โ€ข ์ธํ„ฐ๋ŸฝํŠธ, ์˜ˆ์™ธ ๋“ฑ์— ์˜ํ•ด์„œ๋„ ํŠธ๋žœ์žญ์…˜์ด ์ทจ์†Œ๋จ
โ€ข RTM, HLE ๋ฐฉ์‹์ด ์žˆ์Œ (ํŒจํ„ด์˜ ์ฐจ์ด)
Intel TSX โ€“ Restricted Transactional Memory
รŸํŠธ๋žœ์žญ์…˜ ์‹œ์ž‘
(์ทจ์†Œ ์‹œ L0์œผ๋กœ ์ด๋™)
รŸํŠธ๋žœ์žญ์…˜ ์ข…๋ฃŒ
Intel TSX โ€“ Hardware Lock Elision
รŸํŠธ๋žœ์žญ์…˜ ์‹œ์ž‘
รŸํŠธ๋žœ์žญ์…˜ ๊ฒ€์ฆ&์ปค๋ฐ‹
Intel TSX โ€“ Hardware Lock Elision
1. ํŠธ๋žœ์žญ์…˜ ์‹œ์ž‘
- ํŠน์ • ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ์— ์ž„์˜ ๊ฐ’์„ ๋„ฃ์œผ๋ฉด์„œ ์‹œ์ž‘ (R์ด๋ผ ์นญํ•จ)
- ๋ช…๋ น์–ด๋Š” xacquire lock ์ ‘๋‘์–ด๊ฐ€ ๋ถ™์€ add, sub, xchg ๋“ฑ ๋ช‡ ๊ฐ€์ง€๋กœ ์ œํ•œ๋จ
Intel TSX โ€“ Hardware Lock Elision
2. ํŠธ๋žœ์žญ์…˜ ๊ฒ€์ฆ&์ปค๋ฐ‹
- ์‹œ์ž‘ ์‹œ ์ง€์ •๋œ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ์— ๊ฐ’ R์ด ๋“ค์–ด๊ฐ€๊ฒŒ ํ•˜๋Š” ๋ช…๋ น์–ด๋ฅผ xrelease ์ ‘๋‘์–ด๋กœ ์ง€์ •
- ํ•ด๋‹น ๋ช…๋ น์–ด์— ์ง€์ •๋œ ์ฃผ์†Œ, ๊ฐ’, ์ ‘๊ทผ ํฌ๊ธฐ ๋ถˆ์ผ์น˜ ์‹œ ๋กค๋ฐฑ
Intel TSX โ€“ Hardware Lock Elision
3. ํŠธ๋žœ์žญ์…˜ ๋กค๋ฐฑ
- ์‹œ์ž‘ ๋ช…๋ น์–ด(xacquire)๊ฐ€ xacquire ์ ‘๋‘์–ด๊ฐ€ ๋น ์ง„ ์ฑ„๋กœ ๋‹ค์‹œ ์‹คํ–‰๋จ
- ์ด๋ฒˆ์—” (xacquire์ด ๋น ์กŒ์œผ๋ฏ€๋กœ) ํŠธ๋žœ์žญ์…˜ ์•ˆ์—์„œ ์‹คํ–‰๋˜์ง€ ์•Š์œผ๋ฉฐ, xtest๋กœ ์ฒดํฌ ๊ฐ€๋Šฅ
๐Ÿ’ฃ
r1โŠ•r2
stub
2. start HLE (xacquire) after
[rand] := r1 โŠ• r2(ebx)
3. if in HLE (xtest)
run my code
else (aborted during HLE)
return immediately
๐Ÿ’ฃ
r1โŠ•r2
stub
2. start HLE (xacquire) after
[rand] := r1 โŠ• r2(ebx)
3. if in HLE (xtest)
run my code
else (aborted during HLE)
return immediately
รŸ xrelease๊ฐ€ ์ฝ”๋“œ์— ์—†์Œ
๋˜ํ•œ ํŠธ๋žœ์žญ์…˜ ์•ˆ์—์„œ ์‹œ์Šคํ…œ ์ฝœ ๋“ฑ์„
์‹คํ–‰ ์‹œ ๋ฐ”๋กœ ํŠธ๋žœ์žญ์…˜ ์ทจ์†Œ ๋ฐ ๋กค๋ฐฑ
๐Ÿ’ฃ
r1โŠ•r2
stub
2. start HLE (xacquire) after
[rand] := r1 โŠ• r2(ebx)
3. if in HLE (xtest)
run my code
else (aborted during HLE)
return immediately
รŸ xrelease๊ฐ€ ์ฝ”๋“œ์— ์—†์Œ
๋˜ํ•œ ํŠธ๋žœ์žญ์…˜ ์•ˆ์—์„œ ์‹œ์Šคํ…œ ์ฝœ ๋“ฑ์„
์‹คํ–‰ ์‹œ ๋ฐ”๋กœ ํŠธ๋žœ์žญ์…˜ ์ทจ์†Œ ๋ฐ ๋กค๋ฐฑ
์ฝ”๋“œ์—์„œ ํŠธ๋žœ์žญ์…˜์„ ๋น ์ ธ ๋‚˜์™€์•ผ ๋จ
xrelease mov [rand], r1 ๋กœ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ,
r1 ๋˜๋Š” r2์˜ ๊ฐ’์€ ์ฝ”๋“œ ์ฃผ๋ณ€์— ์—†์Œ
โ€œ๋ชฉํ‘œ: r1, r2 ์ค‘ ํ•˜๋‚˜ ์ฐพ๊ธฐโ€
โ€ข xacquire ์ง์ „, ์ฝ”๋“œ ๋ฐ”๋กœ ์•ž ์ฃผ์†Œ(&rand)์—๋Š” r1์˜ ๊ฐ’์ด ์žˆ์—ˆ์Œ
โ€ข ํ˜„์žฌ๋Š” r1โŠ•r2๊ฐ€ ์žˆ์Œ
โ€ข ์Šคํƒ, ๋ฐ”์ด๋„ˆ๋ฆฌ, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ค‘ ์–ด๋–ค ์ฃผ์†Œ๋„ ๋ชจ๋ฆ„
โ€ข rsp = 0, rbx = 0, rdi = 0
์ฝ”๋“œ์—์„œ ํŠธ๋žœ์žญ์…˜์„ ๋น ์ ธ ๋‚˜์™€์•ผ ๋จ
xrelease mov [rand], r1 ๋กœ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ,
r1 ๋˜๋Š” r2์˜ ๊ฐ’์€ ์ฝ”๋“œ ์ฃผ๋ณ€์— ์—†์Œ
โ€œ๋ชฉํ‘œ: r1, r2 ์ค‘ ํ•˜๋‚˜ ์ฐพ๊ธฐโ€
โ€ข Q. rdi(&rand)์˜ ์›๋ž˜ ๊ฐ’์€? A. RIP-relative addressing
โ€ข lea rdi, [rip โ€“ 0x...] (ํ˜„์žฌ ๋ช…๋ น์–ด ๊ทผ์ฒ˜์˜ ์ฃผ์†Œ๋ฅผ ์–ป์–ด์˜ด)
โ€ข 64๋น„ํŠธ ๊ธฐ๋Šฅ (32๋น„ํŠธ๋Š” fstenv๋กœ ๊ฐ€๋Šฅ)
user input (shellcode)
~1024 bytes
r1
4 bytes
stub code
65 bytes
โ€œ๋ชฉํ‘œ: r1, r2 ์ค‘ ํ•˜๋‚˜ ์ฐพ๊ธฐโ€
โ€ข Q. r1, r2์˜ ๊ฐ’์€ ์–ด๋””์—?
โ€ข ๋ ˆ์ง€์Šคํ„ฐ (์ •์ˆ˜, ์‹ค์ˆ˜ ๋“ฑ๋“ฑ), ์ฝ”๋“œ ์ฃผ๋ณ€์—๋Š” ์—†์Œ
โ€ข ์Šคํƒ์—๋Š”?
main์—์„œ์˜ r1, r2
allocate_code:
โ€ข ์ฝ”๋“œ ํ• ๋‹น, stub ๋ฐฐ์น˜
user input (shellcode)
~1024 bytes
r1
4 bytes
stub code
65 bytes
allocate_code (assembly):
์ฐพ์•˜๋‹ค, r1!
โ€ข ํ•˜์ง€๋งŒ... ํ•จ์ˆ˜๊ฐ€ ๋๋‚˜๋„ ์ด ๊ฐ’์ด ๋‚จ์•„์žˆ์„๊นŒ?
main() stackallocate_code() stack r1
0x2C bytes
[rbp-0x1C]
โ€ข ์žˆ๋‹ค! ํ•˜์ง€๋งŒ, sleep, printf, my_memcpy ํ›„์— ๋‚จ์•„์žˆ์„๊นŒ?
์Šคํƒ ์ง„ํ–‰๋ฐฉํ–ฅ
The long road to xacquire ...
printf ร  my_memcpy ร  sleep ร  ์‹คํ–‰
The long road to xacquire ...
printf ร  my_memcpy ร  sleep ร  ์‹คํ–‰
X
nbytes = 0์ด๋ฉด ๊ฑด๋„ˆ๋›ฐ๊ธฐ ๊ฐ€๋Šฅ!
์†Œ์ผ“์„ shutdown ๋˜๋Š” close ํ•˜๋ฉด ๋จ
๊ฑฐ์˜ ๋‹ค ์™”๋‹ค!
โ€ข ๋งˆ์ง€๋ง‰ ์—ฐ๊ฒฐ ๊ณ ๋ฆฌ: libc์˜ ์ฃผ์†Œ
โ€ข libc์˜ argv, environ ๋ณ€์ˆ˜๊ฐ€ main ๋’ค์˜ ์Šคํƒ ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ์Œ
r1=? rsp=? ... &libc.so.6
__environ
ร  rsp
shutdown(fd)
ร  skip memcpy
allocate_code
ร  rsp-0x2C: r1
libc ๊ทผ์ฒ˜ ํฌ์ธํ„ฐ ์–ป๊ธฐ
main = [malloc x 2 + free x 1] x n ร  unsorted bin ร  &libc.so
์–ด์งธ์„œ free ํ›„ libc ํฌ์ธํ„ฐ๊ฐ€ ๋‚จ๋Š”๊ฐ€?
user input (shellcode)
~1024 bytes
r1
4 bytes
stub code
65 bytes
stdout ๋ฒ„ํผ (0x2000)
stdout ๋ฒ„ํผ (0x2000)freed (unsorted bin)
fd bk
libc pointer
stdout ๋ฒ„ํผ (0x2000)freed (unsorted bin)
r1
4 bytes
stub code
65 bytes
fd bk
user input (0bytes)
โ€ข stdout์—์„œ line buffering์„ ์ˆ˜ํ–‰, ์‰˜์ฝ”๋“œ free ์‹œ top chunk์™€ ๋ณ‘ํ•ฉ๋˜์ง€ ์•Š์Œ (setvbuf w/ _IOLBF)
โ€ข 1024 byte ์ด์ƒ์˜ ํž™ ์ฒญํฌ๋ฅผ freeํ•  ๊ฒฝ์šฐ tcache๊ฐ€ ์ ์šฉ๋˜์ง€ ์•Š๊ณ  unsorted bin ์ƒ์„ฑ
โ€ข unsorted bin ์ƒ์„ฑ ์‹œ ํ•ด๋‹น ํž™ ์ฒญํฌ ์ฃผ์†Œ์—๋Š” ๋‘ ๊ฐœ์˜ libc ํฌ์ธํ„ฐ(&main_arena.top)๊ฐ€ ์ €์žฅ๋จ
ํ’€์ด
์•„๋ž˜์˜ ์‰˜์ฝ”๋“œ๋ฅผ 1024-0x41-4๋ฐ”์ดํŠธ ์ด์ƒ์˜ ํฌ๊ธฐ๋กœ ํŒจ๋”ฉํ•˜์—ฌ ๋ณด๋‚ธ ํ›„, ์†Œ์ผ“ shutdown
โ€ข ์ฝ”๋“œ ์ฃผ์œ„์˜ fd/bk ํฌ์ธํ„ฐ(main_arena)๋กœ environ ํฌ์ธํ„ฐ(์Šคํƒ)๋ฅผ ์–ป๊ณ ,
โ€ข mov rax, [rip + ...]
โ€ข ์Šคํƒ์— ์žˆ๋Š” r1 ๊ฐ’์„ ์–ป์–ด์™€ ๊ฐ’์„ ๋ณต๊ตฌํ•˜๋Š” ๋ช…๋ น์–ด๋ฅผ,
โ€ข mov rax, [rax]; sub rax, ...; mov eax, [rax]
โ€ข xrelease prefix๋ฅผ ๋ถ™์—ฌ์„œ ์‹คํ–‰, ํŠธ๋žœ์ ์…˜ ๋ฐ–์œผ๋กœ ๋‚˜์˜ค๊ธฐ
โ€ข xrelease mov [rip - ...], eax; <๋ฐ”๊นฅ์—์„œ ์‹คํ–‰ํ•  ์‰˜์ฝ”๋“œ>
โ€ข ๊ทธ ๋’ค์˜ ์ฝ”๋“œ์—์„œ๋Š” /FLAG.txt๋ฅผ ์ฝ์–ด์„œ ์ถœ๋ ฅ
Reference
Intel TSX - HLE
โ€ข Intel TSX-NI (Wikipedia)
โ€ข HLE instructions - xacquire / xrelease
โ€ข Intelยฎ 64 and IA-32 Architectures Software Developerโ€™s Manual โ€“ Chapter 16
glibc heap (malloc, free)
โ€ข [glibc] ๋™์  ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ
โ€ข malloc diagram

More Related Content

What's hot

Startup JavaScript 6 - ํ•จ์ˆ˜, ์Šค์ฝ”ํ”„, ํด๋กœ์ €
Startup JavaScript 6 - ํ•จ์ˆ˜, ์Šค์ฝ”ํ”„, ํด๋กœ์ €Startup JavaScript 6 - ํ•จ์ˆ˜, ์Šค์ฝ”ํ”„, ํด๋กœ์ €
Startup JavaScript 6 - ํ•จ์ˆ˜, ์Šค์ฝ”ํ”„, ํด๋กœ์ €Circulus
ย 
7. variable scope rule,-storage_class
7. variable scope rule,-storage_class7. variable scope rule,-storage_class
7. variable scope rule,-storage_class์›…์‹ ์ „
ย 
Startup JavaScript 3 - ์กฐ๊ฑด๋ฌธ, ๋ฐ˜๋ณต๋ฌธ, ์˜ˆ์™ธ์ฒ˜๋ฆฌ
Startup JavaScript 3 - ์กฐ๊ฑด๋ฌธ, ๋ฐ˜๋ณต๋ฌธ, ์˜ˆ์™ธ์ฒ˜๋ฆฌStartup JavaScript 3 - ์กฐ๊ฑด๋ฌธ, ๋ฐ˜๋ณต๋ฌธ, ์˜ˆ์™ธ์ฒ˜๋ฆฌ
Startup JavaScript 3 - ์กฐ๊ฑด๋ฌธ, ๋ฐ˜๋ณต๋ฌธ, ์˜ˆ์™ธ์ฒ˜๋ฆฌCirculus
ย 
11์žฅ ์œˆ๋„์šฐ ์Šค๋ ˆ๋“œ ํ’€
11์žฅ ์œˆ๋„์šฐ ์Šค๋ ˆ๋“œ ํ’€11์žฅ ์œˆ๋„์šฐ ์Šค๋ ˆ๋“œ ํ’€
11์žฅ ์œˆ๋„์šฐ ์Šค๋ ˆ๋“œ ํ’€ํ™์ค€ ๊น€
ย 
Sha 2017-teaser-round website attack writeup
Sha 2017-teaser-round website attack writeupSha 2017-teaser-round website attack writeup
Sha 2017-teaser-round website attack writeupSeungyong Lee
ย 
ํ”„๋ก ํŠธ์—”๋“œ์Šคํ„ฐ๋”” E05 js closure oop
ํ”„๋ก ํŠธ์—”๋“œ์Šคํ„ฐ๋”” E05 js closure oopํ”„๋ก ํŠธ์—”๋“œ์Šคํ„ฐ๋”” E05 js closure oop
ํ”„๋ก ํŠธ์—”๋“œ์Šคํ„ฐ๋”” E05 js closure oopYoung-Beom Rhee
ย 
windows via c++ Ch 5. Job
windows via c++ Ch 5. Jobwindows via c++ Ch 5. Job
windows via c++ Ch 5. JobHyosung Jeon
ย 
[Swift] Protocol (2/2)
[Swift] Protocol (2/2)[Swift] Protocol (2/2)
[Swift] Protocol (2/2)Bill Kim
ย 
๊ณจ๋•Œ๋ฆฌ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฐœํ‘œ์ž๋ฃŒ
๊ณจ๋•Œ๋ฆฌ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฐœํ‘œ์ž๋ฃŒ๊ณจ๋•Œ๋ฆฌ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฐœํ‘œ์ž๋ฃŒ
๊ณจ๋•Œ๋ฆฌ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฐœํ‘œ์ž๋ฃŒ์šฑ์ง„ ์–‘
ย 
์‚ฌ๋‚ด์Šคํ„ฐ๋”” ๋ฐœํ‘œ ์˜จ๋ผ์ธ๊ฒŒ์ž„์„œ๋ฒ„์ดํ•ด 20100401
์‚ฌ๋‚ด์Šคํ„ฐ๋”” ๋ฐœํ‘œ ์˜จ๋ผ์ธ๊ฒŒ์ž„์„œ๋ฒ„์ดํ•ด 20100401์‚ฌ๋‚ด์Šคํ„ฐ๋”” ๋ฐœํ‘œ ์˜จ๋ผ์ธ๊ฒŒ์ž„์„œ๋ฒ„์ดํ•ด 20100401
์‚ฌ๋‚ด์Šคํ„ฐ๋”” ๋ฐœํ‘œ ์˜จ๋ผ์ธ๊ฒŒ์ž„์„œ๋ฒ„์ดํ•ด 20100401guest91f89d83
ย 
[OpenTRS-001] Vitor
[OpenTRS-001] Vitor[OpenTRS-001] Vitor
[OpenTRS-001] VitorTheori
ย 
[ES6] 9. Iterator
[ES6] 9. Iterator[ES6] 9. Iterator
[ES6] 9. IteratorHan JaeYeab
ย 
[Windows via c/c++] 4์žฅ ํ”„๋กœ์„ธ์Šค
[Windows via c/c++] 4์žฅ ํ”„๋กœ์„ธ์Šค[Windows via c/c++] 4์žฅ ํ”„๋กœ์„ธ์Šค
[Windows via c/c++] 4์žฅ ํ”„๋กœ์„ธ์Šค์ข…๋นˆ ์˜ค
ย 
ํ—ท๊ฐˆ๋ฆฌ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ •๋ฆฌ
ํ—ท๊ฐˆ๋ฆฌ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ •๋ฆฌํ—ท๊ฐˆ๋ฆฌ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ •๋ฆฌ
ํ—ท๊ฐˆ๋ฆฌ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ •๋ฆฌ์€์ˆ™ ์ด
ย 
[OpenTRS-001] RTOoOS
[OpenTRS-001] RTOoOS[OpenTRS-001] RTOoOS
[OpenTRS-001] RTOoOSTheori
ย 
PowerVR Low Level GLSL Optimisation
PowerVR Low Level GLSL Optimisation PowerVR Low Level GLSL Optimisation
PowerVR Low Level GLSL Optimisation ๋ฏผ์›… ์ด
ย 
Effective Modern C++ MVA item 18 Use std::unique_ptr for exclusive-ownership ...
Effective Modern C++ MVA item 18 Use std::unique_ptr for exclusive-ownership ...Effective Modern C++ MVA item 18 Use std::unique_ptr for exclusive-ownership ...
Effective Modern C++ MVA item 18 Use std::unique_ptr for exclusive-ownership ...Seok-joon Yun
ย 
7๊ฐ€์ง€ ๋™์‹œ์„ฑ ๋ชจ๋ธ 4์žฅ
7๊ฐ€์ง€ ๋™์‹œ์„ฑ ๋ชจ๋ธ 4์žฅ7๊ฐ€์ง€ ๋™์‹œ์„ฑ ๋ชจ๋ธ 4์žฅ
7๊ฐ€์ง€ ๋™์‹œ์„ฑ ๋ชจ๋ธ 4์žฅHyeonSeok Choi
ย 

What's hot (20)

Startup JavaScript 6 - ํ•จ์ˆ˜, ์Šค์ฝ”ํ”„, ํด๋กœ์ €
Startup JavaScript 6 - ํ•จ์ˆ˜, ์Šค์ฝ”ํ”„, ํด๋กœ์ €Startup JavaScript 6 - ํ•จ์ˆ˜, ์Šค์ฝ”ํ”„, ํด๋กœ์ €
Startup JavaScript 6 - ํ•จ์ˆ˜, ์Šค์ฝ”ํ”„, ํด๋กœ์ €
ย 
7. variable scope rule,-storage_class
7. variable scope rule,-storage_class7. variable scope rule,-storage_class
7. variable scope rule,-storage_class
ย 
Startup JavaScript 3 - ์กฐ๊ฑด๋ฌธ, ๋ฐ˜๋ณต๋ฌธ, ์˜ˆ์™ธ์ฒ˜๋ฆฌ
Startup JavaScript 3 - ์กฐ๊ฑด๋ฌธ, ๋ฐ˜๋ณต๋ฌธ, ์˜ˆ์™ธ์ฒ˜๋ฆฌStartup JavaScript 3 - ์กฐ๊ฑด๋ฌธ, ๋ฐ˜๋ณต๋ฌธ, ์˜ˆ์™ธ์ฒ˜๋ฆฌ
Startup JavaScript 3 - ์กฐ๊ฑด๋ฌธ, ๋ฐ˜๋ณต๋ฌธ, ์˜ˆ์™ธ์ฒ˜๋ฆฌ
ย 
Jvm
JvmJvm
Jvm
ย 
11์žฅ ์œˆ๋„์šฐ ์Šค๋ ˆ๋“œ ํ’€
11์žฅ ์œˆ๋„์šฐ ์Šค๋ ˆ๋“œ ํ’€11์žฅ ์œˆ๋„์šฐ ์Šค๋ ˆ๋“œ ํ’€
11์žฅ ์œˆ๋„์šฐ ์Šค๋ ˆ๋“œ ํ’€
ย 
Sha 2017-teaser-round website attack writeup
Sha 2017-teaser-round website attack writeupSha 2017-teaser-round website attack writeup
Sha 2017-teaser-round website attack writeup
ย 
ํ”„๋ก ํŠธ์—”๋“œ์Šคํ„ฐ๋”” E05 js closure oop
ํ”„๋ก ํŠธ์—”๋“œ์Šคํ„ฐ๋”” E05 js closure oopํ”„๋ก ํŠธ์—”๋“œ์Šคํ„ฐ๋”” E05 js closure oop
ํ”„๋ก ํŠธ์—”๋“œ์Šคํ„ฐ๋”” E05 js closure oop
ย 
windows via c++ Ch 5. Job
windows via c++ Ch 5. Jobwindows via c++ Ch 5. Job
windows via c++ Ch 5. Job
ย 
[Swift] Protocol (2/2)
[Swift] Protocol (2/2)[Swift] Protocol (2/2)
[Swift] Protocol (2/2)
ย 
๊ณจ๋•Œ๋ฆฌ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฐœํ‘œ์ž๋ฃŒ
๊ณจ๋•Œ๋ฆฌ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฐœํ‘œ์ž๋ฃŒ๊ณจ๋•Œ๋ฆฌ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฐœํ‘œ์ž๋ฃŒ
๊ณจ๋•Œ๋ฆฌ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฐœํ‘œ์ž๋ฃŒ
ย 
javascript02
javascript02javascript02
javascript02
ย 
์‚ฌ๋‚ด์Šคํ„ฐ๋”” ๋ฐœํ‘œ ์˜จ๋ผ์ธ๊ฒŒ์ž„์„œ๋ฒ„์ดํ•ด 20100401
์‚ฌ๋‚ด์Šคํ„ฐ๋”” ๋ฐœํ‘œ ์˜จ๋ผ์ธ๊ฒŒ์ž„์„œ๋ฒ„์ดํ•ด 20100401์‚ฌ๋‚ด์Šคํ„ฐ๋”” ๋ฐœํ‘œ ์˜จ๋ผ์ธ๊ฒŒ์ž„์„œ๋ฒ„์ดํ•ด 20100401
์‚ฌ๋‚ด์Šคํ„ฐ๋”” ๋ฐœํ‘œ ์˜จ๋ผ์ธ๊ฒŒ์ž„์„œ๋ฒ„์ดํ•ด 20100401
ย 
[OpenTRS-001] Vitor
[OpenTRS-001] Vitor[OpenTRS-001] Vitor
[OpenTRS-001] Vitor
ย 
[ES6] 9. Iterator
[ES6] 9. Iterator[ES6] 9. Iterator
[ES6] 9. Iterator
ย 
[Windows via c/c++] 4์žฅ ํ”„๋กœ์„ธ์Šค
[Windows via c/c++] 4์žฅ ํ”„๋กœ์„ธ์Šค[Windows via c/c++] 4์žฅ ํ”„๋กœ์„ธ์Šค
[Windows via c/c++] 4์žฅ ํ”„๋กœ์„ธ์Šค
ย 
ํ—ท๊ฐˆ๋ฆฌ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ •๋ฆฌ
ํ—ท๊ฐˆ๋ฆฌ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ •๋ฆฌํ—ท๊ฐˆ๋ฆฌ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ •๋ฆฌ
ํ—ท๊ฐˆ๋ฆฌ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ •๋ฆฌ
ย 
[OpenTRS-001] RTOoOS
[OpenTRS-001] RTOoOS[OpenTRS-001] RTOoOS
[OpenTRS-001] RTOoOS
ย 
PowerVR Low Level GLSL Optimisation
PowerVR Low Level GLSL Optimisation PowerVR Low Level GLSL Optimisation
PowerVR Low Level GLSL Optimisation
ย 
Effective Modern C++ MVA item 18 Use std::unique_ptr for exclusive-ownership ...
Effective Modern C++ MVA item 18 Use std::unique_ptr for exclusive-ownership ...Effective Modern C++ MVA item 18 Use std::unique_ptr for exclusive-ownership ...
Effective Modern C++ MVA item 18 Use std::unique_ptr for exclusive-ownership ...
ย 
7๊ฐ€์ง€ ๋™์‹œ์„ฑ ๋ชจ๋ธ 4์žฅ
7๊ฐ€์ง€ ๋™์‹œ์„ฑ ๋ชจ๋ธ 4์žฅ7๊ฐ€์ง€ ๋™์‹œ์„ฑ ๋ชจ๋ธ 4์žฅ
7๊ฐ€์ง€ ๋™์‹œ์„ฑ ๋ชจ๋ธ 4์žฅ
ย 

Similar to [OpenTRS-001] Hotel California

Visual Studio๋ฅผ ์ด์šฉํ•œ ์–ด์…ˆ๋ธ”๋ฆฌ์–ด ํ•™์Šต part 1
Visual Studio๋ฅผ ์ด์šฉํ•œ ์–ด์…ˆ๋ธ”๋ฆฌ์–ด ํ•™์Šต part 1Visual Studio๋ฅผ ์ด์šฉํ•œ ์–ด์…ˆ๋ธ”๋ฆฌ์–ด ํ•™์Šต part 1
Visual Studio๋ฅผ ์ด์šฉํ•œ ์–ด์…ˆ๋ธ”๋ฆฌ์–ด ํ•™์Šต part 1YEONG-CHEON YOU
ย 
Load of Buffer Overflow ๋ฌธ์ œํ’€์ด
Load of Buffer Overflow ๋ฌธ์ œํ’€์ดLoad of Buffer Overflow ๋ฌธ์ œํ’€์ด
Load of Buffer Overflow ๋ฌธ์ œํ’€์ดfromitive
ย 
Assembly ์Šคํ„ฐ๋”” 2
Assembly ์Šคํ„ฐ๋”” 2Assembly ์Šคํ„ฐ๋”” 2
Assembly ์Šคํ„ฐ๋”” 2Jinkyoung Kim
ย 
Pwnable study basic_3
Pwnable study basic_3Pwnable study basic_3
Pwnable study basic_3Jinkyoung Kim
ย 
์ œํ”„๋ฆฌ ๋ฆฌ์ฒ˜์˜ Windows via C/C++ : 8์žฅ ์œ ์ € ๋ชจ๋“œ์—์„œ์˜ ์Šค๋ ˆ๋“œ ๋™๊ธฐํ™”
์ œํ”„๋ฆฌ ๋ฆฌ์ฒ˜์˜ Windows via C/C++ : 8์žฅ ์œ ์ € ๋ชจ๋“œ์—์„œ์˜ ์Šค๋ ˆ๋“œ ๋™๊ธฐํ™”์ œํ”„๋ฆฌ ๋ฆฌ์ฒ˜์˜ Windows via C/C++ : 8์žฅ ์œ ์ € ๋ชจ๋“œ์—์„œ์˜ ์Šค๋ ˆ๋“œ ๋™๊ธฐํ™”
์ œํ”„๋ฆฌ ๋ฆฌ์ฒ˜์˜ Windows via C/C++ : 8์žฅ ์œ ์ € ๋ชจ๋“œ์—์„œ์˜ ์Šค๋ ˆ๋“œ ๋™๊ธฐํ™”sung ki choi
ย 
[2010 CodeEngn Conference 04] hahah - Defcon 18 CTF ๋ฌธ์ œํ’€์ด
[2010 CodeEngn Conference 04] hahah - Defcon 18 CTF ๋ฌธ์ œํ’€์ด[2010 CodeEngn Conference 04] hahah - Defcon 18 CTF ๋ฌธ์ œํ’€์ด
[2010 CodeEngn Conference 04] hahah - Defcon 18 CTF ๋ฌธ์ œํ’€์ดGangSeok Lee
ย 
NDC12_Lockless๊ฒŒ์ž„์„œ๋ฒ„์„ค๊ณ„์™€๊ตฌํ˜„
NDC12_Lockless๊ฒŒ์ž„์„œ๋ฒ„์„ค๊ณ„์™€๊ตฌํ˜„NDC12_Lockless๊ฒŒ์ž„์„œ๋ฒ„์„ค๊ณ„์™€๊ตฌํ˜„
NDC12_Lockless๊ฒŒ์ž„์„œ๋ฒ„์„ค๊ณ„์™€๊ตฌํ˜„noerror
ย 
Redis edu 3
Redis edu 3Redis edu 3
Redis edu 3DaeMyung Kang
ย 
Network researching
Network researchingNetwork researching
Network researchinghyeok gyu Kwon
ย 
๋™๊ธฐํ™”, ์Šค์ผ€์ค„๋ง
๋™๊ธฐํ™”, ์Šค์ผ€์ค„๋ง๋™๊ธฐํ™”, ์Šค์ผ€์ค„๋ง
๋™๊ธฐํ™”, ์Šค์ผ€์ค„๋งxxbdxx
ย 
Windows kernel basic exploit
Windows kernel basic exploitWindows kernel basic exploit
Windows kernel basic exploitKyoungseok Yang
ย 
[2017 Incognito] ์Šคํƒ ๊ตฌ์กฐ ๋ถ„์„์„ ํ†ตํ•œ ROP ๊ธฐ๋ฒ•์˜ ๋ชจ๋“  ๊ฒƒ
[2017 Incognito] ์Šคํƒ ๊ตฌ์กฐ ๋ถ„์„์„ ํ†ตํ•œ ROP ๊ธฐ๋ฒ•์˜ ๋ชจ๋“  ๊ฒƒ[2017 Incognito] ์Šคํƒ ๊ตฌ์กฐ ๋ถ„์„์„ ํ†ตํ•œ ROP ๊ธฐ๋ฒ•์˜ ๋ชจ๋“  ๊ฒƒ
[2017 Incognito] ์Šคํƒ ๊ตฌ์กฐ ๋ถ„์„์„ ํ†ตํ•œ ROP ๊ธฐ๋ฒ•์˜ ๋ชจ๋“  ๊ฒƒNAVER D2
ย 
[์•„๊ฟˆ์‚ฌ/110528] ๋ฉ€ํ‹ฐ์ฝ”์–ดcpu์ด์•ผ๊ธฐ 5,6์žฅ
[์•„๊ฟˆ์‚ฌ/110528] ๋ฉ€ํ‹ฐ์ฝ”์–ดcpu์ด์•ผ๊ธฐ 5,6์žฅ[์•„๊ฟˆ์‚ฌ/110528] ๋ฉ€ํ‹ฐ์ฝ”์–ดcpu์ด์•ผ๊ธฐ 5,6์žฅ
[์•„๊ฟˆ์‚ฌ/110528] ๋ฉ€ํ‹ฐ์ฝ”์–ดcpu์ด์•ผ๊ธฐ 5,6์žฅsung ki choi
ย 
Linux Kernel Boot Process , SOSCON 2015, By Mario Cho
Linux Kernel Boot Process , SOSCON 2015, By Mario ChoLinux Kernel Boot Process , SOSCON 2015, By Mario Cho
Linux Kernel Boot Process , SOSCON 2015, By Mario ChoMario Cho
ย 
Ch19
Ch19Ch19
Ch19a1a123
ย 
Windows Debugging Technique #2
Windows Debugging Technique #2Windows Debugging Technique #2
Windows Debugging Technique #2Wooseok Seo
ย 
Oracle database 12 c on oracle linux 7.3
Oracle database 12 c on oracle linux 7.3Oracle database 12 c on oracle linux 7.3
Oracle database 12 c on oracle linux 7.3suk kim
ย 
Wire shark ์‚ฌ์šฉ๋ฒ• ๋ฐ ๋„คํŠธ์›Œํฌ ๊ฐœ๋ก  ์‚ด์ง ์„ค๋ช…
Wire shark ์‚ฌ์šฉ๋ฒ• ๋ฐ ๋„คํŠธ์›Œํฌ ๊ฐœ๋ก  ์‚ด์ง ์„ค๋ช…Wire shark ์‚ฌ์šฉ๋ฒ• ๋ฐ ๋„คํŠธ์›Œํฌ ๊ฐœ๋ก  ์‚ด์ง ์„ค๋ช…
Wire shark ์‚ฌ์šฉ๋ฒ• ๋ฐ ๋„คํŠธ์›Œํฌ ๊ฐœ๋ก  ์‚ด์ง ์„ค๋ช…์ง„์šฐ ์ด
ย 

Similar to [OpenTRS-001] Hotel California (20)

Visual Studio๋ฅผ ์ด์šฉํ•œ ์–ด์…ˆ๋ธ”๋ฆฌ์–ด ํ•™์Šต part 1
Visual Studio๋ฅผ ์ด์šฉํ•œ ์–ด์…ˆ๋ธ”๋ฆฌ์–ด ํ•™์Šต part 1Visual Studio๋ฅผ ์ด์šฉํ•œ ์–ด์…ˆ๋ธ”๋ฆฌ์–ด ํ•™์Šต part 1
Visual Studio๋ฅผ ์ด์šฉํ•œ ์–ด์…ˆ๋ธ”๋ฆฌ์–ด ํ•™์Šต part 1
ย 
Load of Buffer Overflow ๋ฌธ์ œํ’€์ด
Load of Buffer Overflow ๋ฌธ์ œํ’€์ดLoad of Buffer Overflow ๋ฌธ์ œํ’€์ด
Load of Buffer Overflow ๋ฌธ์ œํ’€์ด
ย 
Assembly ์Šคํ„ฐ๋”” 2
Assembly ์Šคํ„ฐ๋”” 2Assembly ์Šคํ„ฐ๋”” 2
Assembly ์Šคํ„ฐ๋”” 2
ย 
Pwnable study basic_3
Pwnable study basic_3Pwnable study basic_3
Pwnable study basic_3
ย 
์ œํ”„๋ฆฌ ๋ฆฌ์ฒ˜์˜ Windows via C/C++ : 8์žฅ ์œ ์ € ๋ชจ๋“œ์—์„œ์˜ ์Šค๋ ˆ๋“œ ๋™๊ธฐํ™”
์ œํ”„๋ฆฌ ๋ฆฌ์ฒ˜์˜ Windows via C/C++ : 8์žฅ ์œ ์ € ๋ชจ๋“œ์—์„œ์˜ ์Šค๋ ˆ๋“œ ๋™๊ธฐํ™”์ œํ”„๋ฆฌ ๋ฆฌ์ฒ˜์˜ Windows via C/C++ : 8์žฅ ์œ ์ € ๋ชจ๋“œ์—์„œ์˜ ์Šค๋ ˆ๋“œ ๋™๊ธฐํ™”
์ œํ”„๋ฆฌ ๋ฆฌ์ฒ˜์˜ Windows via C/C++ : 8์žฅ ์œ ์ € ๋ชจ๋“œ์—์„œ์˜ ์Šค๋ ˆ๋“œ ๋™๊ธฐํ™”
ย 
[2010 CodeEngn Conference 04] hahah - Defcon 18 CTF ๋ฌธ์ œํ’€์ด
[2010 CodeEngn Conference 04] hahah - Defcon 18 CTF ๋ฌธ์ œํ’€์ด[2010 CodeEngn Conference 04] hahah - Defcon 18 CTF ๋ฌธ์ œํ’€์ด
[2010 CodeEngn Conference 04] hahah - Defcon 18 CTF ๋ฌธ์ œํ’€์ด
ย 
NDC12_Lockless๊ฒŒ์ž„์„œ๋ฒ„์„ค๊ณ„์™€๊ตฌํ˜„
NDC12_Lockless๊ฒŒ์ž„์„œ๋ฒ„์„ค๊ณ„์™€๊ตฌํ˜„NDC12_Lockless๊ฒŒ์ž„์„œ๋ฒ„์„ค๊ณ„์™€๊ตฌํ˜„
NDC12_Lockless๊ฒŒ์ž„์„œ๋ฒ„์„ค๊ณ„์™€๊ตฌํ˜„
ย 
Redis edu 3
Redis edu 3Redis edu 3
Redis edu 3
ย 
Network researching
Network researchingNetwork researching
Network researching
ย 
๋™๊ธฐํ™”, ์Šค์ผ€์ค„๋ง
๋™๊ธฐํ™”, ์Šค์ผ€์ค„๋ง๋™๊ธฐํ™”, ์Šค์ผ€์ค„๋ง
๋™๊ธฐํ™”, ์Šค์ผ€์ค„๋ง
ย 
Windows kernel basic exploit
Windows kernel basic exploitWindows kernel basic exploit
Windows kernel basic exploit
ย 
[2017 Incognito] ์Šคํƒ ๊ตฌ์กฐ ๋ถ„์„์„ ํ†ตํ•œ ROP ๊ธฐ๋ฒ•์˜ ๋ชจ๋“  ๊ฒƒ
[2017 Incognito] ์Šคํƒ ๊ตฌ์กฐ ๋ถ„์„์„ ํ†ตํ•œ ROP ๊ธฐ๋ฒ•์˜ ๋ชจ๋“  ๊ฒƒ[2017 Incognito] ์Šคํƒ ๊ตฌ์กฐ ๋ถ„์„์„ ํ†ตํ•œ ROP ๊ธฐ๋ฒ•์˜ ๋ชจ๋“  ๊ฒƒ
[2017 Incognito] ์Šคํƒ ๊ตฌ์กฐ ๋ถ„์„์„ ํ†ตํ•œ ROP ๊ธฐ๋ฒ•์˜ ๋ชจ๋“  ๊ฒƒ
ย 
[์•„๊ฟˆ์‚ฌ/110528] ๋ฉ€ํ‹ฐ์ฝ”์–ดcpu์ด์•ผ๊ธฐ 5,6์žฅ
[์•„๊ฟˆ์‚ฌ/110528] ๋ฉ€ํ‹ฐ์ฝ”์–ดcpu์ด์•ผ๊ธฐ 5,6์žฅ[์•„๊ฟˆ์‚ฌ/110528] ๋ฉ€ํ‹ฐ์ฝ”์–ดcpu์ด์•ผ๊ธฐ 5,6์žฅ
[์•„๊ฟˆ์‚ฌ/110528] ๋ฉ€ํ‹ฐ์ฝ”์–ดcpu์ด์•ผ๊ธฐ 5,6์žฅ
ย 
Linux Kernel Boot Process , SOSCON 2015, By Mario Cho
Linux Kernel Boot Process , SOSCON 2015, By Mario ChoLinux Kernel Boot Process , SOSCON 2015, By Mario Cho
Linux Kernel Boot Process , SOSCON 2015, By Mario Cho
ย 
Ch19
Ch19Ch19
Ch19
ย 
(Lisp)
(Lisp)(Lisp)
(Lisp)
ย 
Windows Debugging Technique #2
Windows Debugging Technique #2Windows Debugging Technique #2
Windows Debugging Technique #2
ย 
Main Variable Program
Main Variable ProgramMain Variable Program
Main Variable Program
ย 
Oracle database 12 c on oracle linux 7.3
Oracle database 12 c on oracle linux 7.3Oracle database 12 c on oracle linux 7.3
Oracle database 12 c on oracle linux 7.3
ย 
Wire shark ์‚ฌ์šฉ๋ฒ• ๋ฐ ๋„คํŠธ์›Œํฌ ๊ฐœ๋ก  ์‚ด์ง ์„ค๋ช…
Wire shark ์‚ฌ์šฉ๋ฒ• ๋ฐ ๋„คํŠธ์›Œํฌ ๊ฐœ๋ก  ์‚ด์ง ์„ค๋ช…Wire shark ์‚ฌ์šฉ๋ฒ• ๋ฐ ๋„คํŠธ์›Œํฌ ๊ฐœ๋ก  ์‚ด์ง ์„ค๋ช…
Wire shark ์‚ฌ์šฉ๋ฒ• ๋ฐ ๋„คํŠธ์›Œํฌ ๊ฐœ๋ก  ์‚ด์ง ์„ค๋ช…
ย 

More from Theori

[OpenTRS-001] LCARS000
[OpenTRS-001] LCARS000[OpenTRS-001] LCARS000
[OpenTRS-001] LCARS000Theori
ย 
[OpenTRS-001] Keynote
[OpenTRS-001] Keynote[OpenTRS-001] Keynote
[OpenTRS-001] KeynoteTheori
ย 
[OpenTRS-001] LCARS022
[OpenTRS-001] LCARS022[OpenTRS-001] LCARS022
[OpenTRS-001] LCARS022Theori
ย 
[OpenTRS-001] election_coin
[OpenTRS-001] election_coin[OpenTRS-001] election_coin
[OpenTRS-001] election_coinTheori
ย 
[OpenTRS-001] ooops
[OpenTRS-001] ooops[OpenTRS-001] ooops
[OpenTRS-001] ooopsTheori
ย 
[OpenTRS-001] ASRybaB
[OpenTRS-001] ASRybaB[OpenTRS-001] ASRybaB
[OpenTRS-001] ASRybaBTheori
ย 

More from Theori (6)

[OpenTRS-001] LCARS000
[OpenTRS-001] LCARS000[OpenTRS-001] LCARS000
[OpenTRS-001] LCARS000
ย 
[OpenTRS-001] Keynote
[OpenTRS-001] Keynote[OpenTRS-001] Keynote
[OpenTRS-001] Keynote
ย 
[OpenTRS-001] LCARS022
[OpenTRS-001] LCARS022[OpenTRS-001] LCARS022
[OpenTRS-001] LCARS022
ย 
[OpenTRS-001] election_coin
[OpenTRS-001] election_coin[OpenTRS-001] election_coin
[OpenTRS-001] election_coin
ย 
[OpenTRS-001] ooops
[OpenTRS-001] ooops[OpenTRS-001] ooops
[OpenTRS-001] ooops
ย 
[OpenTRS-001] ASRybaB
[OpenTRS-001] ASRybaB[OpenTRS-001] ASRybaB
[OpenTRS-001] ASRybaB
ย 

[OpenTRS-001] Hotel California

  • 2. ๋ฌธ์ œ ์„ค๋ช… You know the rules: you can check out any time you like but you can never leave! (flag in /FLAG.txt) โ€ข hotelcalifornia.quals2019.oooverflow.io 7777 Files: โ€ข hotel_california โ€ข x86-64 shellcode, Intel TSX
  • 4. ์‰˜์ฝ”๋“œ (shell-code) โ€ข ์ทจ์•ฝ์ ์„ ๊ณต๊ฒฉํ•˜๊ธฐ ์œ„ํ•ด ์„œ๋ฒ„์— ๋ณด๋‚ด ์‹คํ–‰ํ•˜๋Š” ์ฝ”๋“œ โ€ข ์–ด์…ˆ๋ธ”๋ฆฌ์–ด๋กœ ์ž‘์„ฑ x31xc0_x50_x68x2fx2fx73x68_x68... xor eax,eax push eax push โ€˜//shโ€™ (0x68732f2f) push ...
  • 6. ๋ฌธ์ œ์˜ ํ๋ฆ„ 1. ์‰˜์ฝ”๋“œ๋ฅผ ์ž…๋ ฅ๋ฐ›๊ณ  2. ๋ ˆ์ง€์Šคํ„ฐ๋“ค์„ 0์œผ๋กœ ์„ธํŒ…ํ•œ ๋’ค 3. ์‹คํ–‰ (๋ฐ˜๋ณต)
  • 7. ๋ฌธ์ œ์˜ ํ๋ฆ„ 1. ์‰˜์ฝ”๋“œ๋ฅผ ์ž…๋ ฅ๋ฐ›๊ณ  2. ๋ ˆ์ง€์Šคํ„ฐ๋“ค์„ 0์œผ๋กœ ์„ธํŒ…ํ•œ ๋’ค 3. ์‹คํ–‰ (๋ฐ˜๋ณต)
  • 8. ๋ฌธ์ œ์˜ ํ๋ฆ„ 1. ์‰˜์ฝ”๋“œ๋ฅผ ์ž…๋ ฅ๋ฐ›๊ณ  2. ๋ ˆ์ง€์Šคํ„ฐ๋“ค์„ 0์œผ๋กœ ์„ธํŒ…ํ•œ ๋’ค 3. ์‹คํ–‰ (๋ฐ˜๋ณต)
  • 9. ๋ฌธ์ œ์˜ ํ๋ฆ„ 1. ์‰˜์ฝ”๋“œ๋ฅผ ์ž…๋ ฅ๋ฐ›๊ณ  โ€ข ๋‚œ์ˆ˜ r1, r2๋ฅผ ์ƒ์„ฑ โ€ข ์ฝ”๋“œ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ ์ƒ์— ๋ฐฐ์น˜ user input (shellcode) ~1024 bytes r1 4 bytes stub code 65 bytes ์—ฌ๊ธฐ์„œ๋ถ€ํ„ฐ ์‹คํ–‰
  • 10. stub code โ€ข ์ž…๋ ฅํ•œ ์‰˜์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๊ธฐ ์ „, ๊ณ ์ •๋œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ ๐Ÿ’ฃ r1 stub
  • 11. ๐Ÿ’ฃ r1 stub 1. rdi := &rand rax, rcx, rdx, rsi := 0
  • 12. ๐Ÿ’ฃ r1โŠ•r2 stub 2. start HLE (xacquire) after [rand] := r1 โŠ• r2(ebx) 3. if in HLE (xtest) run my code else (aborted during HLE) return immediately
  • 13. Intel TSX โ€ข Transactional Synchronization Extensions โ€ข Intel CPU์˜ ์ƒˆ๋กœ์šด ๋ช…๋ น์–ด ์ง‘ํ•ฉ โ€ข xacquire - xrelease / xbegin - xend / xtest โ€ข Transactional memory์˜ ํ•˜๋“œ์›จ์–ด ๋ ˆ๋ฒจ ๊ตฌํ˜„ (์ค‘๋žต)
  • 14. Intel TSX โ€ข ๊ธฐ๋ณธ์ ์ธ ์ปจ์…‰ (DB์™€ ๋น„์Šทํ•จ) โ€ข โ€ํŠธ๋žœ์žญ์…˜โ€์„ ์‹œ์ž‘ ํ›„ โ€œ์ปค๋ฐ‹โ€์„ ํ•˜๊ธฐ ์ „๊นŒ์ง€์˜ ๋ชจ๋“  ์—ฐ์‚ฐ์„ CPU์—์„œ ๊ธฐ๋ก โ€ข ์ค‘๊ฐ„์— โ€œ์ทจ์†Œโ€๋ฅผ ํ•˜๋ฉด ํ•ด๋‹น ์—ฐ์‚ฐ๋“ค์ด ๋ฒ„๋ ค์ง€๊ณ , ๊ฒฐ๊ณผ๋Š” ๋ฐ˜์˜์ด ์•ˆ ๋จ โ€ข ์ธํ„ฐ๋ŸฝํŠธ, ์˜ˆ์™ธ ๋“ฑ์— ์˜ํ•ด์„œ๋„ ํŠธ๋žœ์žญ์…˜์ด ์ทจ์†Œ๋จ โ€ข RTM, HLE ๋ฐฉ์‹์ด ์žˆ์Œ (ํŒจํ„ด์˜ ์ฐจ์ด)
  • 15. Intel TSX โ€“ Restricted Transactional Memory รŸํŠธ๋žœ์žญ์…˜ ์‹œ์ž‘ (์ทจ์†Œ ์‹œ L0์œผ๋กœ ์ด๋™) รŸํŠธ๋žœ์žญ์…˜ ์ข…๋ฃŒ
  • 16. Intel TSX โ€“ Hardware Lock Elision รŸํŠธ๋žœ์žญ์…˜ ์‹œ์ž‘ รŸํŠธ๋žœ์žญ์…˜ ๊ฒ€์ฆ&์ปค๋ฐ‹
  • 17. Intel TSX โ€“ Hardware Lock Elision 1. ํŠธ๋žœ์žญ์…˜ ์‹œ์ž‘ - ํŠน์ • ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ์— ์ž„์˜ ๊ฐ’์„ ๋„ฃ์œผ๋ฉด์„œ ์‹œ์ž‘ (R์ด๋ผ ์นญํ•จ) - ๋ช…๋ น์–ด๋Š” xacquire lock ์ ‘๋‘์–ด๊ฐ€ ๋ถ™์€ add, sub, xchg ๋“ฑ ๋ช‡ ๊ฐ€์ง€๋กœ ์ œํ•œ๋จ
  • 18. Intel TSX โ€“ Hardware Lock Elision 2. ํŠธ๋žœ์žญ์…˜ ๊ฒ€์ฆ&์ปค๋ฐ‹ - ์‹œ์ž‘ ์‹œ ์ง€์ •๋œ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ์— ๊ฐ’ R์ด ๋“ค์–ด๊ฐ€๊ฒŒ ํ•˜๋Š” ๋ช…๋ น์–ด๋ฅผ xrelease ์ ‘๋‘์–ด๋กœ ์ง€์ • - ํ•ด๋‹น ๋ช…๋ น์–ด์— ์ง€์ •๋œ ์ฃผ์†Œ, ๊ฐ’, ์ ‘๊ทผ ํฌ๊ธฐ ๋ถˆ์ผ์น˜ ์‹œ ๋กค๋ฐฑ
  • 19. Intel TSX โ€“ Hardware Lock Elision 3. ํŠธ๋žœ์žญ์…˜ ๋กค๋ฐฑ - ์‹œ์ž‘ ๋ช…๋ น์–ด(xacquire)๊ฐ€ xacquire ์ ‘๋‘์–ด๊ฐ€ ๋น ์ง„ ์ฑ„๋กœ ๋‹ค์‹œ ์‹คํ–‰๋จ - ์ด๋ฒˆ์—” (xacquire์ด ๋น ์กŒ์œผ๋ฏ€๋กœ) ํŠธ๋žœ์žญ์…˜ ์•ˆ์—์„œ ์‹คํ–‰๋˜์ง€ ์•Š์œผ๋ฉฐ, xtest๋กœ ์ฒดํฌ ๊ฐ€๋Šฅ
  • 20. ๐Ÿ’ฃ r1โŠ•r2 stub 2. start HLE (xacquire) after [rand] := r1 โŠ• r2(ebx) 3. if in HLE (xtest) run my code else (aborted during HLE) return immediately
  • 21. ๐Ÿ’ฃ r1โŠ•r2 stub 2. start HLE (xacquire) after [rand] := r1 โŠ• r2(ebx) 3. if in HLE (xtest) run my code else (aborted during HLE) return immediately รŸ xrelease๊ฐ€ ์ฝ”๋“œ์— ์—†์Œ ๋˜ํ•œ ํŠธ๋žœ์žญ์…˜ ์•ˆ์—์„œ ์‹œ์Šคํ…œ ์ฝœ ๋“ฑ์„ ์‹คํ–‰ ์‹œ ๋ฐ”๋กœ ํŠธ๋žœ์žญ์…˜ ์ทจ์†Œ ๋ฐ ๋กค๋ฐฑ
  • 22. ๐Ÿ’ฃ r1โŠ•r2 stub 2. start HLE (xacquire) after [rand] := r1 โŠ• r2(ebx) 3. if in HLE (xtest) run my code else (aborted during HLE) return immediately รŸ xrelease๊ฐ€ ์ฝ”๋“œ์— ์—†์Œ ๋˜ํ•œ ํŠธ๋žœ์žญ์…˜ ์•ˆ์—์„œ ์‹œ์Šคํ…œ ์ฝœ ๋“ฑ์„ ์‹คํ–‰ ์‹œ ๋ฐ”๋กœ ํŠธ๋žœ์žญ์…˜ ์ทจ์†Œ ๋ฐ ๋กค๋ฐฑ ์ฝ”๋“œ์—์„œ ํŠธ๋žœ์žญ์…˜์„ ๋น ์ ธ ๋‚˜์™€์•ผ ๋จ xrelease mov [rand], r1 ๋กœ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, r1 ๋˜๋Š” r2์˜ ๊ฐ’์€ ์ฝ”๋“œ ์ฃผ๋ณ€์— ์—†์Œ
  • 23. โ€œ๋ชฉํ‘œ: r1, r2 ์ค‘ ํ•˜๋‚˜ ์ฐพ๊ธฐโ€ โ€ข xacquire ์ง์ „, ์ฝ”๋“œ ๋ฐ”๋กœ ์•ž ์ฃผ์†Œ(&rand)์—๋Š” r1์˜ ๊ฐ’์ด ์žˆ์—ˆ์Œ โ€ข ํ˜„์žฌ๋Š” r1โŠ•r2๊ฐ€ ์žˆ์Œ โ€ข ์Šคํƒ, ๋ฐ”์ด๋„ˆ๋ฆฌ, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ค‘ ์–ด๋–ค ์ฃผ์†Œ๋„ ๋ชจ๋ฆ„ โ€ข rsp = 0, rbx = 0, rdi = 0 ์ฝ”๋“œ์—์„œ ํŠธ๋žœ์žญ์…˜์„ ๋น ์ ธ ๋‚˜์™€์•ผ ๋จ xrelease mov [rand], r1 ๋กœ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, r1 ๋˜๋Š” r2์˜ ๊ฐ’์€ ์ฝ”๋“œ ์ฃผ๋ณ€์— ์—†์Œ
  • 24. โ€œ๋ชฉํ‘œ: r1, r2 ์ค‘ ํ•˜๋‚˜ ์ฐพ๊ธฐโ€ โ€ข Q. rdi(&rand)์˜ ์›๋ž˜ ๊ฐ’์€? A. RIP-relative addressing โ€ข lea rdi, [rip โ€“ 0x...] (ํ˜„์žฌ ๋ช…๋ น์–ด ๊ทผ์ฒ˜์˜ ์ฃผ์†Œ๋ฅผ ์–ป์–ด์˜ด) โ€ข 64๋น„ํŠธ ๊ธฐ๋Šฅ (32๋น„ํŠธ๋Š” fstenv๋กœ ๊ฐ€๋Šฅ) user input (shellcode) ~1024 bytes r1 4 bytes stub code 65 bytes
  • 25. โ€œ๋ชฉํ‘œ: r1, r2 ์ค‘ ํ•˜๋‚˜ ์ฐพ๊ธฐโ€ โ€ข Q. r1, r2์˜ ๊ฐ’์€ ์–ด๋””์—? โ€ข ๋ ˆ์ง€์Šคํ„ฐ (์ •์ˆ˜, ์‹ค์ˆ˜ ๋“ฑ๋“ฑ), ์ฝ”๋“œ ์ฃผ๋ณ€์—๋Š” ์—†์Œ โ€ข ์Šคํƒ์—๋Š”?
  • 27. allocate_code: โ€ข ์ฝ”๋“œ ํ• ๋‹น, stub ๋ฐฐ์น˜ user input (shellcode) ~1024 bytes r1 4 bytes stub code 65 bytes
  • 29. ์ฐพ์•˜๋‹ค, r1! โ€ข ํ•˜์ง€๋งŒ... ํ•จ์ˆ˜๊ฐ€ ๋๋‚˜๋„ ์ด ๊ฐ’์ด ๋‚จ์•„์žˆ์„๊นŒ? main() stackallocate_code() stack r1 0x2C bytes [rbp-0x1C] โ€ข ์žˆ๋‹ค! ํ•˜์ง€๋งŒ, sleep, printf, my_memcpy ํ›„์— ๋‚จ์•„์žˆ์„๊นŒ? ์Šคํƒ ์ง„ํ–‰๋ฐฉํ–ฅ
  • 30. The long road to xacquire ... printf ร  my_memcpy ร  sleep ร  ์‹คํ–‰
  • 31. The long road to xacquire ... printf ร  my_memcpy ร  sleep ร  ์‹คํ–‰ X nbytes = 0์ด๋ฉด ๊ฑด๋„ˆ๋›ฐ๊ธฐ ๊ฐ€๋Šฅ! ์†Œ์ผ“์„ shutdown ๋˜๋Š” close ํ•˜๋ฉด ๋จ
  • 32. ๊ฑฐ์˜ ๋‹ค ์™”๋‹ค! โ€ข ๋งˆ์ง€๋ง‰ ์—ฐ๊ฒฐ ๊ณ ๋ฆฌ: libc์˜ ์ฃผ์†Œ โ€ข libc์˜ argv, environ ๋ณ€์ˆ˜๊ฐ€ main ๋’ค์˜ ์Šคํƒ ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ์Œ r1=? rsp=? ... &libc.so.6 __environ ร  rsp shutdown(fd) ร  skip memcpy allocate_code ร  rsp-0x2C: r1
  • 33. libc ๊ทผ์ฒ˜ ํฌ์ธํ„ฐ ์–ป๊ธฐ main = [malloc x 2 + free x 1] x n ร  unsorted bin ร  &libc.so
  • 34. ์–ด์งธ์„œ free ํ›„ libc ํฌ์ธํ„ฐ๊ฐ€ ๋‚จ๋Š”๊ฐ€? user input (shellcode) ~1024 bytes r1 4 bytes stub code 65 bytes stdout ๋ฒ„ํผ (0x2000) stdout ๋ฒ„ํผ (0x2000)freed (unsorted bin) fd bk libc pointer stdout ๋ฒ„ํผ (0x2000)freed (unsorted bin) r1 4 bytes stub code 65 bytes fd bk user input (0bytes) โ€ข stdout์—์„œ line buffering์„ ์ˆ˜ํ–‰, ์‰˜์ฝ”๋“œ free ์‹œ top chunk์™€ ๋ณ‘ํ•ฉ๋˜์ง€ ์•Š์Œ (setvbuf w/ _IOLBF) โ€ข 1024 byte ์ด์ƒ์˜ ํž™ ์ฒญํฌ๋ฅผ freeํ•  ๊ฒฝ์šฐ tcache๊ฐ€ ์ ์šฉ๋˜์ง€ ์•Š๊ณ  unsorted bin ์ƒ์„ฑ โ€ข unsorted bin ์ƒ์„ฑ ์‹œ ํ•ด๋‹น ํž™ ์ฒญํฌ ์ฃผ์†Œ์—๋Š” ๋‘ ๊ฐœ์˜ libc ํฌ์ธํ„ฐ(&main_arena.top)๊ฐ€ ์ €์žฅ๋จ
  • 35. ํ’€์ด ์•„๋ž˜์˜ ์‰˜์ฝ”๋“œ๋ฅผ 1024-0x41-4๋ฐ”์ดํŠธ ์ด์ƒ์˜ ํฌ๊ธฐ๋กœ ํŒจ๋”ฉํ•˜์—ฌ ๋ณด๋‚ธ ํ›„, ์†Œ์ผ“ shutdown โ€ข ์ฝ”๋“œ ์ฃผ์œ„์˜ fd/bk ํฌ์ธํ„ฐ(main_arena)๋กœ environ ํฌ์ธํ„ฐ(์Šคํƒ)๋ฅผ ์–ป๊ณ , โ€ข mov rax, [rip + ...] โ€ข ์Šคํƒ์— ์žˆ๋Š” r1 ๊ฐ’์„ ์–ป์–ด์™€ ๊ฐ’์„ ๋ณต๊ตฌํ•˜๋Š” ๋ช…๋ น์–ด๋ฅผ, โ€ข mov rax, [rax]; sub rax, ...; mov eax, [rax] โ€ข xrelease prefix๋ฅผ ๋ถ™์—ฌ์„œ ์‹คํ–‰, ํŠธ๋žœ์ ์…˜ ๋ฐ–์œผ๋กœ ๋‚˜์˜ค๊ธฐ โ€ข xrelease mov [rip - ...], eax; <๋ฐ”๊นฅ์—์„œ ์‹คํ–‰ํ•  ์‰˜์ฝ”๋“œ> โ€ข ๊ทธ ๋’ค์˜ ์ฝ”๋“œ์—์„œ๋Š” /FLAG.txt๋ฅผ ์ฝ์–ด์„œ ์ถœ๋ ฅ
  • 36. Reference Intel TSX - HLE โ€ข Intel TSX-NI (Wikipedia) โ€ข HLE instructions - xacquire / xrelease โ€ข Intelยฎ 64 and IA-32 Architectures Software Developerโ€™s Manual โ€“ Chapter 16 glibc heap (malloc, free) โ€ข [glibc] ๋™์  ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ โ€ข malloc diagram