์ƒˆ์†Œ์‹

Game/wargame

[wargame.kr] md5 password

  • -
๋ฐ˜์‘ํ˜•

 

 

[wargame 8๋ฒˆ ๋ฌธ์ œ ํ’€์ด]

 

 

๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ณด์ž

 

md5 password์— ๊ด€๋ จ๋œ ๋ฌธ์ œ์ธ ๋“ฏ ํ•˜๋‹ค.

 

 

๋ฌธ์ œ๋ฅผ ๋ณด๋‹ˆ, ์ด์ „ ๋ฌธ์ œ์™€ ์ƒ๊ธด ๊ฑด ๋”ฑํžˆ ๋‹ค๋ฅผ๊ฒŒ ์—†๋‹ค.

 

 

get source๋กœ ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด์ž.

 

 

 

ํ•ต์‹ฌ ์ฝ”๋“œ๋Š” ๋นจ๊ฐ„ ๋„ค๋ชจ์ธ ๊ฒƒ ๊ฐ™๋‹ค.

์œ„์—์„œ ์‹ค์ œ ์ž…๋ ฅํ•˜๋Š” ํŒจ์Šค์›Œ๋“œ ๊ฐ’ ์ฆ‰ ๋ณ€์ˆ˜ $ps๋Š” mysql_real_escape_string()์œผ๋กœ SQL์ธ์ ์…˜์— ๋Œ€ํ•ด ๋ฐฉ์ง€ํ•˜๊ณ  ์žˆ๋‹ค.

 

 

www.lug.or.kr/files/docs/PHP/function.mysql-real-escape-string.html

 

mysql_query์—์„œ ํŠน์ˆ˜ ๋ฌธ์ž์—ด์„ ์ด์Šค์ผ€์ดํ”„ํ•˜๊ธฐ์œ„ํ•ด ์‚ฌ์šฉ

mysql_real_escape_string()์€ ๊ฐ ๋ณ€์ˆ˜์— ๋Œ€ํ•ด SQL ์ธ์ ์…˜์„ ๋ฐฉ์ง€ํ•œ๋‹ค. ์ด ์˜ˆ์ œ๋Š” Magic Quotes ์„ค์ •๊ณผ๋Š” ๋ณ„๊ฐœ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์งˆ์˜ํ•˜๋Š” "best practice" ๋ฐฉ๋ฒ•์„ ์‹œ์—ฐํ•œ๋‹ค.  0) {            echo "Product in

www.lug.or.kr

๊ฐ„๋‹จํžˆ ๋งํ•˜์ž๋ฉด ์œ„ ํ•จ์ˆ˜์˜ ๊ธฐ๋Šฅ์€ SQL injection์„ ๋ง‰์•„์ฃผ๊ธฐ ์œ„ํ•ด ํŠน์ˆ˜๋ฌธ์ž ์•ž์—

์ด์Šค์ผ€์ดํ”„๋ฅผ ๋ถ™์—ฌ์ฃผ๋Š” ๊ธฐ๋Šฅ์ด ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

 

์ด์Šค์ผ€์ดํ”„(escape) ๋ฌธ์ž๋ž€ \(๋ฐฑ์Šฌ๋ž˜์‰ฌ)๋ฅผ ์•ž์— ๋ถ™์—ฌ php์— ์ •์˜๋˜์–ด ์žˆ๋Š” ์›๋ž˜์˜ ์˜๋ฏธ๋ฅผ ๋ฒ—์–ด๋‚˜๋Š” ๋ฌธ์ž๋“ค์„ ๋งํ•œ๋‹ค.

 

 

ํ•˜์ง€๋งŒ ์ค‘์ ์€ ๊ทธ ๋ถ€๋ถ„์ด ์•„๋‹ˆ๋ผ, ์•„๋ž˜ ์ฟผ๋ฆฌ๋ฌธ์ด ๋“ค์–ด๊ฐ€๋Š” ๊ณผ์ •์— ์žˆ๋‹ค. 

์œ„ ์ฝ”๋“œ๋ฅผ ํ•ด์„ํ•ด๋ณด์ž๋ฉด, $ps ๋ณ€์ˆ˜ ๊ฐ’์„ md5๋กœ ํ•ด์‹œํ•˜๊ณ , ๊ทธ ๊ฐ’์ด admin_password ํ…Œ์ด๋ธ”์— ์กด์žฌ ํ•œ๋‹ค๋ฉด $row๋ณ€์ˆ˜์— ๊ฐ’์„ ๋„ฃ์–ด์ฃผ๊ณ , ์•„๋ž˜ if๋ฌธ์œผ๋กœ row๋ณ€์ˆ˜์— ๊ฐ’์ด ๋“ค์–ด์žˆ๋‹ค๋ฉด, key ๊ฐ’์„ ์ถœ๋ ฅํ•ด์ฃผ๋Š” ํ˜•ํƒœ์ด๋‹ค.

 

 

key๊ฐ’์„ ์ถœ๋ ฅ์‹œํ‚ค๋ ค๋ฉด, DBํ…Œ์ด๋ธ” ์•ˆ์— ์žˆ๋Š” password ์˜ md5ํ•ด์‹œ ๊ฐ’์„ ๋งž์ถ”์–ด์•ผ ํ•œ๋‹ค.

ํ•˜์ง€๋งŒ ์šฐํšŒ ํ•จ์ˆ˜๋ฅผ ๊ฑธ์–ด๋†“์•˜๊ณ , ์•”ํ˜ธํ™” ๋˜์–ด์žˆ๋Š” ๊ฒƒ์„ ๋งž์ถ”๊ธฐ๋ž€ ๊ฑฐ์˜ ๋ถˆ๊ฐ€๋Šฅ ํ•˜๋‹ค.

 

 

๊ทธ๋ ‡๋‹ค๋ฉด password์— ๋“ค์–ด๊ฐ€๋Š” ๊ฐ’์„ ์‚ดํŽด๋ณด์ž.

php ํ•จ์ˆ˜ ์ค‘ ํ•˜๋‚˜์ธ md5()๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค. ์ด ํ•จ์ˆ˜์—๋Š” ์ž˜ ์•Œ๋ ค์ง„ ๋งค์šฐ ์ทจ์•ฝ์ ์ด ์žˆ๋‹ค.

 

 

๋จผ์ € md5()๊ฐ€ ๋ฌด์Šจ ํ•จ์ˆ˜์ธ์ง€ ์•Œ์•„๋ณด์ž.

md5ํ•จ์ˆ˜๋Š” ์ธ์ž๋กœ ๋“ค์–ด์˜จ ๋ฌธ์ž์—ด์„ md5 ํ•ด์‹œํ™” ํ•˜์—ฌ 32byte์˜ ๊ธธ์ด๋กœ ๋ฐ˜ํ™˜ํ•ด์ฃผ๋Š” ํ•จ์ˆ˜์ด๋‹ค.

md5()ํ•จ์ˆ˜๋Š” ๋‘ ๋ฒˆ์งธ ์ธ์ž ๊ฐ’์„ ์„ ํƒ์ ์œผ๋กœ ์ค„ ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋Š” raw_output์— ํ•ด๋‹นํ•˜๋Š” ์˜ต์…˜์ด๋‹ค.

 

๋ฐ”๋กœ ์ด raw_output์— ์˜ํ•ด ์ทจ์•ฝ์ ์ด ๋ฐœ์ƒํ•œ๋‹ค.

 

raw_output์˜ต์…˜์˜  default(๊ธฐ๋ณธ๊ฐ’)์€ False์ด๋ฉฐ, ์ด๋ฅผ True๋กœ ์ฃผ๊ฒŒ ๋œ๋‹ค๋ฉด 32byte ๊ธธ์ด์˜ Hex ๊ฐ’์„ 16 byte์˜ ๋ฐ”์ด๋„ˆ๋ฆฌ ๊ฐ’์œผ๋กœ ๋ฐ˜ํ™˜ํ•ด์ค€๋‹ค.

 

 

python์œผ๋กœ ๊ฐ„๋‹จํ•œ ์˜ˆ์‹œ๋ฅผ ์ง  ๊ฒƒ์„ ํ™•์ธํ•ด๋ณด์ž

 

์ถœ์ฒ˜ : https://m.blog.naver.com/PostView.nhn?blogId=is_king&logNo=221532839875&proxyReferer=https:%2F%2Fwww.google.com%2F

 

 

์œ„์— ๋ณด๋‹ค์‹ถ์ด, password๋ผ๋Š” ๋ฌธ์ž์—ด์„ ๋ฐ”์ด๋„ˆ๋ฆฌ๋กœ ์ถœ๋ ฅ ํ•ด๋ณธ ๊ฒฐ๊ณผ๋‹ค.

hashlib ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ  md5 ํ•ด์‹œ๋œ password๋ผ๋Š” ๋ฌธ์ž์—ด์„

Hex๊ฐ’๊ณผ, binary ๊ฐ’์œผ๋กœ ์ถœ๋ ฅ ํ•œ ์ฝ”๋“œ์ด๋‹ค.

 

 

์ฆ‰ Hex๊ฐ’์€ raw_output ์˜ต์…˜์˜ False๋ฅผ ๋งํ•˜๋ฉฐ, 

binaty์˜ ๊ฐ’์œผ๋กœ ์ถœ๋ ฅ๋œ ์ฝ”๋“œ๋Š” raw_output ์˜ต์…˜์ด True์ธ ๊ฒฝ์šฐ๋ฅผ ๋งํ•œ๋‹ค.

 

 

์•„๋ž˜๋Š” ๋˜๋‹ค๋ฅธ ์˜ˆ์‹œ์ด๋‹ค.

https://hyunmini.tistory.com/43

 

ํ•จ์ˆ˜์˜ ํŠน์ง•์„ ์•Œ์•˜์œผ๋‹ˆ, ์šฐํšŒ ๋ฐฉ๋ฒ•์„ ์ƒ๊ฐํ•ด๋ณด์ž.

 

md5 ํ•จ์ˆ˜ ๋ถ€๋ถ„์— ๋งŒ์•ฝ 'or'์ด ๋“ค์–ด๊ฐ€๊ฒŒ ํ•˜์—ฌ SQL injection์„ ํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ?

 

 

์œ„ ์ฟผ๋ฆฌ๋ฌธ์—์„œ ๋„ค๋ชจ์นœ ๋ถ€๋ถ„์— 'or'์ด ๋“ค์–ด๊ฐ„๋‹ค๊ณ  ์ƒ๊ฐ์„ ํ•ด๋ณด๋ฉด

 

1) "select * from admin_password where password='  ".md5($ps,true)."  '  "

2) select * from admin_password where password=' md5($ps,true) '

3) select * from admin_password where password=' 'or' '

4) select * from admin_password where True

 

์ด๋ ‡๊ฒŒ ์œ„์™€ ๊ฐ™์€ ๋‹จ๊ณ„๋กœ sql ์ฟผ๋ฆฌ๋ฌธ์ด ๋งŒ๋“ค์–ด ์ง„๋‹ค ์ฆ‰ password = '  ' or '  ' ์ด๋Ÿฌํ•œ ์ฟผ๋ฆฌ ๋ฌธ์ด ๋“ค์–ด๊ฐ€๊ฒŒ ๋˜์–ด, 

 

password = '  ' --> False

or

' ' --> True

 

์ฆ‰ False or True ๋กœ ๊ฒฐ๊ณผ๋Š” True๊ฐ€ ๋˜์–ด admin_password ํ…Œ์ด๋ธ” ๋‚ด์— ์žˆ๋Š” ๋ชจ๋“  ํŒจ์Šค์›Œ๋“œ๊ฐ€ ์ถœ๋ ฅ๋  ๊ฒƒ์ด๋‹ค.

 

์•„๋ž˜์˜ ๋‹ค๋ฅธ ์‚ฌ๋ก€๋กœ '=' ์„ ์ด์šฉํ•˜์—ฌ ์ทจ์•ฝ์ ์„ ๋ฐœ์ƒ์‹œํ‚ฌ ์ˆ˜๋„ ์žˆ๋‹ค.

 

https://hyunmini.tistory.com/43

(์™€.. ๋‚˜๋Š” ํƒœ์–ด๋‚˜์„œ false injection์„ ์ฒ˜์Œ ์•Œ์•˜๋‹ค... mysql ์˜ค๋ฅ˜์ธ๊ฐ€? ์ƒ๊ฐํ–ˆ๋˜ ๊ฑด๋ฐ.. false.. .. .. ๋ฉ”..๋ชจ:) 

 

 

์ฆ‰ ๋‘๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋Š” ๊ฒƒ์ด๋‹ค. 

 

1. or๋กœ ์ฐธ๊ณผ ๊ฑฐ์ง“์„ ๋งŒ๋“ค์–ด ์ฐธ ๊ฐ’์œผ๋กœ ๋งŒ๋“ค๊ธฐ.

2. mysql ์— false injection์„ ํ†ตํ•ด ์ฐธ ๊ฐ’์œผ๋กœ ๋งŒ๋“ค๊ธฐ!

 

 

์ด๋ ‡๊ฒŒ ํ’€์ด๋ฒ•์„ ์•Œ์•„๋‚ด์—ˆ์œผ๋‹ˆ, ํŒŒ์ด์ฌ์œผ๋กœ '='๊ฐ’์ด ๋“ค์–ด๊ฐ€๋„๋ก ์ฝ”๋“œ๋ฅผ ์งœ๋ณด์ž.

 

if ๋’ค์— 273d27 --> (ascii code๋กœ 27์€ ์‹ฑ๊ธ€์ฟผํ„ฐ, 3d๋Š” = ์ด๋‹ค. ์ฆ‰ '=' ๋ฅผ ๋‚˜ํƒ€๋ƒ„)

 

 

์ฆ‰ 1~111112210 ๊นŒ์ง€์˜ ์ˆซ์ž๋ฅผ md5๋กœ ํ•ด์‹œํ™” ์‹œํ‚จํ›„ ๋ฌธ์ž์—ด์ทจ๊ธ‰ ํ•˜์—ฌ ์ธ์ฝ”๋”ฉ ํ•œ ๊ฐ’์„ 16์ง„์ˆ˜๋กœ ๋ฐ”๊พผ ๊ฒƒ์ด๋‹ค.

 

 

์ฝ”๋“œ๋ฅผ ์‹คํ–‰ ์‹œํ‚ค๋ฉด, ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๊ฐ’๋“ค์ด ์ถœ๋ ฅ๋œ๋‹ค.

๊ฐ’๋“ค ์ค‘ 1839431์„ ์จ๋ณด์ž (true์ธ ๊ฐ’๋„ ์žˆ๊ณ , false ๋„ ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์ด ์žˆ๋‹ค!)

 

 

Password ์ถœ๋ ฅ!!! Clear~~

 

๋!

๋ฐ˜์‘ํ˜•

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

[wargame.kr] DB is really GOOD  (0) 2021.01.28
wargame ํ’€์ด ๋ชจ์Œ์ง‘  (0) 2021.01.28
[wargame.kr] strcmp  (0) 2021.01.25
[wargame.kr] fly me to the moon  (0) 2020.09.18
Contents

ํฌ์ŠคํŒ… ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค

์ด ๊ธ€์ด ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด ๊ณต๊ฐ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.