์ฒซ ํ๋ฉด์ ์ด๋ค ํด์๊ฐ์ด ์จ์ ธ ์๊ณ ์๋์๋ ๋น๋ฐ๋ฒํธ๋ฅผ ์ ์ถํ๋ ๊ณณ์ด ์๋ค.
[view-source]๋ฅผ ๋๋ฌ ์์ค์ฝ๋๋ฅผ ํ์ธํด ๋ณธ๋ค.
if((isset($_SESSION['chall4'])) && ($_POST['key'] == $_SESSION['chall4'])) solve(4);
์ฌ์ฉ์๋ก ๋ถํฐ key(๋น๋ฐ๋ฒํธ)๋ฅผ ์ ๋ ฅ์ ๋ฐ์ผ๋ฉฐ, chall4 ์ธ์ ๊ณผ ์ผ์นํ๋ฉด solve(4)๋ฅผ ์คํํ๋ค.
์ ์ผ ์ค์ํ ์๋ซ๋ถ๋ถ์ ์ดํด๋ณด๋ฉด
$hash = rand(10000000,99999999)."salt_for_you";
10000000~99999999๊น์ง์ ๋๋ค์ ์ ์๋ฅผ ๊ฐ์ ธ์์ "salt_for_you"๋ผ๋ ์ํธ๋ฅผ ํฉ์น๋ค.
๊ทธ๋์ ์ด "๋๋ค์ซ์_salt_for_you"๋ chall4 ์ธ์ ์ ํ ๋นํ๋ค.
for($i=0;$i<500;$i++) $hash = sha1($hash);
๋ค์ ์๋๋ก ๋์์์ for๋ฌธ์ ๋ณด๋ฉด 500๋ฒ์ $hash๋ฅผ sha1ํจ์์ ๋ฃ๋ ๊ฒ์ ๋ฐ๋ณตํ๋ค.
<tr><td colspan=3 style=background:silver;color:green;><b><?=$hash?></b></td></tr>
์ต์ข ์ ์ผ๋ก ํด์ํํ ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฉ์์๊ฒ ํํธ๋ก ๋ณด์ฌ์ค๋ค.
๊ฒฐ๊ตญ ๋์ ์๋ ์ง์ ๋ง์ ์์ ๋น๋ฐ๋ฒํธ๋ฅผ ํด์ํํ ๋ ์ธ๋ณด์ฐ ํ ์ด๋ธ์ ์์ฑํด์ ํธ๋ ์๋ฐ์ ์๋ค.
chall4.py
import hashlib
import threading
import os, shutil, time
salt = "salt_for_you"
start_time = None
def encodeSHA1(s):
sha1 = hashlib.new('sha1')
sha1.update(bytes(s, 'utf-8'))
return sha1.hexdigest()
def solver(min, max, tid):
global start_time
n=0
for num in range(min, max):
with open( "./table" + "/" + str(tid) + "_rainbow_table.txt", "a") as f:
h = k = str(num) + salt
for _ in range(500):
h = encodeSHA1(h)
if not (num%1000):
print(f"(thread_{tid} | {round(n / len(range(min, max)) * 100, 5)}%) [{round(time.time() - start_time)} sec]")
data = k + " = " + h + "\n"
f.write(data)
n += 1
print(f"(thread_{tid} | {round(n / len(range(min, max)) * 100, 5)}%) [{round(time.time() - start_time)} sec]")
if __name__ == '__main__':
start_time = time.time()
start = 10000000
end = 100000000
if not os.path.exists("./table"):
os.mkdir("./table")
else:
shutil.rmtree("./table")
os.mkdir("./table")
t1 = threading.Thread(target=solver, args=(start, end//2, 1))
t1.start()
t2 = threading.Thread(target=solver, args=(end//2, end, 2))
t2.start()
t1.join()
t2.join()
os.system("pause")
๊ทธ๋์ ์ง์ ํด์ ํ ์ด๋ธ์ ์์ฑํ๋ ์คํฌ๋ฆฝํธ๋ฅผ ์ง๋ณด์๋ค.
๊ทธ๋ ๊ฒ ์คํํ์ง 15์๊ฐ ์ ๋๊ฐ ์ง๋๊ณ ...
thread_1์ด ๋จผ์ ์์ ์ ๋ค ๋์ ๋ด์ 1_rainbow_table.txt ํ์ผ์ ํ์ธํด ๋ณด์๋ค. ์ฉ๋์ 2.42GB์ด๋ฏ๋ก ๊ทธ๋ฅ ๋ฉ๋ชจ์ฅ์ผ๋ก ์ด๋ฉด ์ ๋์ vim์ผ๋ก ์ด์ด์ฃผ์๋ค.
๋ํํ ์ฃผ์ด์ง ํด์ ๊ฐ์ vim์ ์ ๋ ฅ์ ํด์ ๊ทธ์ ๋์ํ๋ ๋น๋ฐ๋ฒํธ๋ฅผ ์ฐพ์๋ด๋๋ฐ ์ฑ๊ณตํ๊ณ
์ ๋ ฅ๋์ ์ ๋ ฅ์ ํ๋๋ฐ!...
์ธ์ ์ด ๋๋์ ์ฌ์ดํธ์ ๋ก๊ทธ์ธ์ ํด๋ฌ๋ผ๊ณ alert์ด ๋ ์ ๋ค์ ๋ก๊ทธ์ธ์ ํด์ฃผ์๋ค..
๋น์ฐํ ํจ์ค์๋ ํด์๋ ๋ฐ๊ปด์ ๋ค์ ์ฌ์ ํ์ผ์ ์๋ก์ด ํด์์ ๋์ํ๋ ๋น๋ฐ๋ฒํธ๋ฅผ ์ฐพ์์ฃผ์๋ค.
๋ค์ ํด์ ๊ฐ์ ์ฐพ์์ ์ ๋ ฅ์ ํด๋ณธ๋ค.
ํน์๋ ์คํ๊ฐ ์๋๊ฐ ํ์ธ์ ํ๊ณ ์ ์ถ!
old-04 Pwned!
ํธ๋๋ฐ๋ง 15์๊ฐ.. ์ ๋ง ๊ธธ๊ณ ๋ ๊ธด ์๊ฐ์ด์๋ค... ๊ธด ์๊ฐ ๋์ ๋ง์ ์ผ์ ์ํจ ์ปดํจํฐ๊ฐ ๋ง์ด ๊ฑฑ์ ์ด ๋๋ค.
๋ฌผ๋ก ์ง๊ธ์ ๋ ์ธ๋ณด์ฐ ํ ์ด๋ธ์ด ์์ด์ ๋ ํธ๋๋ฐ ์ค๋ ๊ฑธ๋ฆฌ์ง ์๋๋ค.
'๐ดCTF > webhacking.kr' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
webhacking.kr - old-39 (0) | 2023.05.31 |
---|---|
webhacking.kr - old-20(Challenge 20) (0) | 2023.02.15 |
webhacking.kr - old-11(Challenge 11) (0) | 2023.02.15 |