ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

CHALLENGE

[LOS] goblin ํ’€์ด(3)

๐ŸŒง: 2020. 12. 5.

 $query = "select id from prob_goblin where id='guest' and no={$_GET[no]}"; 

goblin ๊ฐ™์€ ๊ฒฝ์šฐ ์ „ ๊ณผ๋Š” ๋‹ค๋ฅธ ๊ฒŒ no={$_GET [no]} ์˜์—ญ์— ์ฟผ๋ฆฌ๋ฌธ์„ ์‚ฝ์ž…ํ•˜์—ฌ admin ๊ณ„์ •์œผ๋กœ ์ ‘๊ทผํ•ด์•ผ ๋ฉ๋‹ˆ๋‹ค.

 

  if(preg_match('/prob|_|\.|\(\)/i', $_GET[no])) exit("No Hack ~_~"); 
  if(preg_match('/\'|\"|\`/i', $_GET[no])) exit("No Quotes ~_~"); 

๋˜ํ•œ preg_match์˜ ์˜์—ญ์ด ํ•˜๋‚˜ ๋” ์ถ”๊ฐ€๋˜๋ฉด์„œ ์‹ฑ๊ธ€ ์ฟผํ„ฐ(')์™€ ๋”๋ธ”์ฟผํ„ฐ(") ๊ณผ ์กด์žฌํ•  ๊ฒฝ์šฐ " No Quotes " ํŽ˜์ด์ง€๋กœ ๋„˜๊น€์œผ๋กœ์จ ํ•„ํ„ฐ๋ง ์˜์—ญ์ด ์ถ”๊ฐ€๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์‹ฑ๊ธ€ ์ฟผํ„ฐ๋ฅผ " hex๋กœ ๋Œ๋ ค์„œ url encoding " ์‹œ๋„๋ฅผ ํ•ด๋ดค์ง€๋งŒ ๋™์ผํ•˜๊ฒŒ ๊ฑธ๋ฆฌ๋„ค์š”. ์ด๋Ÿด ๊ฒฝ์šฐ ์ฟผํ„ฐ ์ข…๋ฅ˜๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ ์ ˆํ•œ ์ฟผ๋ฆฌ๋ฌธ์„ ์งœ์•ผ๋ฉ๋‹ˆ๋‹ค.

 

no= ๊ฐ’์— 1์„ ๋„ฃ์–ด๋ณด๋ฉด " Hello Guest " ๊ฐ€ ๋‚˜์˜ค๋Š” ๊ฒƒ์„ ๋ณด๋‹ˆ guest ๊ณ„์ •์€ no=1์„ ๋ถ€์—ฌ๋ฐ›๊ณ  ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿผ no=1 ์€ ์ œ์™ธํ•œ 2 ๋‚˜ 3 ๋“ฑ ๊ฑฐ์ง“ ๊ฐ’์œผ๋กœ ๋งŒ๋“ค์–ด ์ค˜์•ผ ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

 if($result['id'] == 'admin') solve("goblin");

๋˜ํ•œ ํ•ด๋‹น ์†Œ์Šค๋ฅผ ๋ณด๋ฉด id= ๋งค๊ฐœ๋ณ€์ˆ˜์—  "admin" ๊ฐ’์ด ๋“ค์–ด๊ฐ€์•ผ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ํžŒํŠธ๊ฐ€ ๋ณด์ž…๋‹ˆ๋‹ค. 

 

admin์„ hex ์ฝ”๋“œ๋กœ ๋Œ๋ ค url์—์„œ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๊ฒŒ๋” no=2 or id=%61%64% 6d%69%6e ์ด๋Ÿฐ ํ˜•ํƒœ๋กœ ์ž…๋ ฅํ•ด๋ดค์ง€๋งŒ ํ•ด๋…๋งŒ ํ•ด์ค„ ๋ฟ ๋ฐ˜์‘์ด ์—†์Šต๋‹ˆ๋‹ค.

 

๊ณ ๋ฏผ์„ ํ•ด๋ณด๋‹ค๊ฐ€ admin์„ ์ˆœ์ˆ˜ 16์ง„์ˆ˜ ํ˜•์‹์˜ hex ๊ฐ’์œผ๋กœ๋งŒ ๋ณ€ํ™˜ํ•ด์„œ ์‚ฝ์ž…์„ ํ•ด๋ณธ ๊ฒฐ๊ณผ ์„ฑ๊ณต์ ์œผ๋กœ Clear๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

 

admin์„ hex๋กœ ๋ณ€ํ™˜ํ•˜๋ฉด -> 61646d696e ๊ฐ’์ด ๋‚˜์˜ค๊ณ  ํ•ด๋‹น ํŽ˜์ด์ง€๋Š” " php? " ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ธฐ์— hex ์ฝ”๋“œ๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๊ฒŒ๋” ๋งจ ์•ž์— " 0x "๋ฅผ ์„ ์–ธํ•ด์ฃผ๋ฉด ์›นํŽ˜์ด์ง€์—์„œ ์ด๊ฒŒ hex ์ฝ”๋“œ๋ผ๋Š” ๊ฑธ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

hex ์ฝ”๋“œ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ๋‹ค๋ฉด ASCII ์ฝ”๋“œ๋„ ์‚ฌ์šฉํ•ด๋ณผ ๋งŒํ•ฉ๋‹ˆ๋‹ค.(์ง„๋‹จํ•ด๋ณด๋ฉด ๋ณดํ†ต hex ์ฝ”๋“œ๋‚˜ ascii ์ฝ”๋“œ๋‚˜ ํ•จ๊ป˜ ๋„์ถœ๋˜๋”๊ตฐ์š”.)

 

Exploit Code
no=2 or id(097,100,109,105,110)
no=2 or id=0x61646d696e

"char" ํ˜•์‹์˜ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•ด์ฃผ๊ณ  ๊ทธ ์•ˆ์— a(097), d(100), m(109), i(105), n(110) ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜ํ•ด์ค˜์„œ ์ตœ์ข…์ ์œผ๋กœ if($result ['id']์˜ ๋ถ€๋ถ„์— " admin " ์ด ์„ ์–ธ๋˜๋„๋ก ๋ณ€ํ™˜ํ•˜์—ฌ ์ฟผ๋ฆฌ๋ฌธ์„ ์ž‘์„ฑํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

'CHALLENGE' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[LOS] wolfman ํ’€์ด(5)  (0) 2020.12.05
[LOS] ORC ํ’€์ด(4)  (0) 2020.12.05
[LOS] cobolt ํ’€์ด(2)  (0) 2020.12.05
[LOS] gremlin ํ’€์ด(1)  (0) 2020.12.05
XSS Challenges 2  (0) 2020.12.04
๊ณต์œ ํ•˜๊ธฐ ๋งํฌ
Comment