[BJDCTF2020]EasySearch

首先嘗試了一下sql注入,但是沒有找到不同回顯。直接用sqlmap掃描一下,因為這邊用的是POST請求,所以需要抓包將請求復制到txt文件中然后使用命令sqlmap -p bp.txt。也沒有發現注入漏洞。

再進行目錄掃描試試:

[02:33:43] 403 - ?337B ?- /.httr-oauth
[02:36:39] 403 - ?333B ?- /public/

  • /.httr-oauth?是 R 語言 OAuth 授權的敏感配置文件,服務器禁止外部訪問是正常的安全措施。

  • /public/?是公開靜態資源目錄,文件本身應可訪問,403 錯誤可能由權限配置問題導致,需檢查文件權限或服務器規則。

都沒有訪問權限。完全沒有思路了...

看了一眼答案居然是需要用字典掃描網頁備份文件,為什么dirsearch不能掃描出來呢?

<?phpob_start();function get_hash(){$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()+-';$random = $chars[mt_rand(0,73)].$chars[mt_rand(0,73)].$chars[mt_rand(0,73)].$chars[mt_rand(0,73)].$chars[mt_rand(0,73)];//Random 5 times$content = uniqid().$random;return sha1($content); }header("Content-Type: text/html;charset=utf-8");***if(isset($_POST['username']) and $_POST['username'] != '' ){$admin = '6d0bc1';if ( $admin == substr(md5($_POST['password']),0,6)) {echo "<script>alert('[+] Welcome to manage system')</script>";$file_shtml = "public/".get_hash().".shtml";$shtml = fopen($file_shtml, "w") or die("Unable to open file!");$text = '******<h1>Hello,'.$_POST['username'].'</h1>******';fwrite($shtml,$text);fclose($shtml);***echo "[!] Header  error ...";} else {echo "<script>alert('[!] Failed')</script>";}else{***}***
?>

?$admin = '6d0bc1';
? ? ? ? if ( $admin == substr(md5($_POST['password']),0,6))

需滿足該條件,就得找到某字符串的md5編碼前六位是6d0bc1,這里參考[BJDCTF2020]EasySearch (SSI注入漏洞)-CSDN博客的腳本:

import hashlibdef generate_md5(prefix):count = 0while True:data = prefix + str(count)md5_hash = hashlib.md5(data.encode()).hexdigest()if md5_hash.startswith(prefix):return md5_hash, datacount += 1prefix = input("請輸入六個字符的前綴:")
md5_hash, data = generate_md5(prefix)
print("MD5值:", md5_hash)
print("加密前的數據:", data)

然后會將?<h1>Hello,'.$_POST['username'].'</h1>寫入文件"public/".get_hash().".shtml"中。應該是需要植入木馬,但是這里有兩個問題:

1、文件名是通過代碼shal1(uniqid().$random)生成的,其中$random是五位隨機字符串,怎么得到文件名呢?

2、寫入的是shtml文件,并不能植入php一句話木馬,應該植入什么呢?

第一個問題:文件名具有高隨機性,無法破解,所以題目肯定有其他提示。通過抓包可以看到響應中有提示Url_Is_Here: public/e96cae9e326466c68fa54d20e06936b5dc8deb25.shtml

第二個問題:從源碼中我們可以看到,后端直接將用戶輸入放入shtml文件中,存在SSI注入漏洞。

SSI(Server-Side Includes,服務器端包含)注入漏洞是一種因服務器未正確過濾用戶輸入中的 SSI 指令,導致攻擊者可注入惡意 SSI 代碼并被服務器執行的安全漏洞。它主要影響啟用了 SSI 功能的 Web 服務器,攻擊者通過構造惡意請求,可實現文件讀取、命令執行、服務器信息泄露等危害。

一、SSI 技術基礎

SSI 是一種簡單的服務器端腳本技術,允許在 HTML 頁面中嵌入動態指令,服務器在解析頁面時會執行這些指令并將結果替換到頁面中。其核心作用是實現頁面模塊化(如復用導航欄、頁眉頁腳)或動態內容生成(如顯示當前時間、服務器信息)。

?

常見的 SSI 指令格式如下:

?

html

<!--#指令 參數="值" -->

?

例如:

?
  • 顯示服務器當前時間:<!--#echo var="DATE_LOCAL" -->
  • 包含其他文件內容:<!--#include file="header.html" -->
  • 執行系統命令(部分服務器支持):<!--#exec cmd="ls" -->

二、SSI 注入漏洞的成因

SSI 注入漏洞的根本原因是服務器對用戶可控輸入(如表單提交、URL 參數、Cookie 等)未進行嚴格過濾或轉義,導致攻擊者可將惡意 SSI 指令注入到網頁中,且服務器會執行這些指令。

?

具體場景包括:

?
  1. 用戶輸入直接嵌入頁面:例如網站允許用戶提交評論、留言等內容,且未過濾<--#等 SSI 指令特征,導致惡意指令被寫入頁面并被服務器執行。
  2. 文件上傳漏洞結合 SSI:攻擊者上傳包含 SSI 指令的文件(如.shtml.html),若服務器允許該文件被解析為 SSI 頁面,則指令會被執行。
  3. 動態頁面生成缺陷:服務器在動態生成頁面時,將用戶輸入直接拼接進 HTML,且未處理 SSI 特殊語法,導致注入。

三、漏洞危害

SSI 注入的危害程度取決于服務器配置的 SSI 權限,可能包括:

?
  1. 信息泄露
    通過<!--#echo var="VAR_NAME" -->指令獲取服務器環境變量(如操作系統版本、Web 服務器類型、用戶權限等)。
    例如:<!--#echo var="HTTP_USER_AGENT" -->(獲取瀏覽器信息)、<!--#echo var="SERVER_SOFTWARE" -->(獲取服務器軟件版本)。

  2. 文件讀取
    通過<!--#include file="文件路徑" -->指令讀取服務器上的敏感文件(如配置文件、密碼文件、日志文件等)。
    例如:<!--#include file="/etc/passwd" -->(讀取 Linux 用戶列表)、<!--#include file="../config.php" -->(讀取網站配置)。

  3. 遠程命令執行
    若服務器啟用了exec等危險 SSI 指令(如 Apache 的Options +IncludesNOEXEC配置被禁用),攻擊者可直接執行系統命令。
    例如:<!--#exec cmd="whoami" -->(查看當前用戶)、<!--#exec cmd="rm -rf /tmp/*" -->(刪除文件),甚至反彈 shell 控制服務器。

  4. 頁面篡改
    通過注入指令修改頁面內容,誤導用戶或傳播惡意信息。

感覺和模板注入很像。

這里我們直接注入命令執行,令$_POST['username']=<!--#exec cmd="ls /" -->

不在根目錄中,那就從當前工作目錄開始一級一級向上訪問。

更簡便的是使用"find / -name "*flag*""命令,但是這里我試了沒成功,不知道為什么,有可能是靶機用的輕量級linux系統沒有find命令。

在上級目錄中我們能找到有flag_990c66bf85a09c664f0b6741840499b2文件。

總結一下:1、源碼泄露,這道題內容極少,沒有任何線索,那么大概率是需要獲得源碼的,使用dirsearch掃描沒什么發現,需要進一步用bp掃描備份文件。2、一個特殊的md5繞過,我們可以通過腳本構造一個字符串,使其md5編碼帶有特定前綴。3、基礎的SSI注入,原理和其他注入漏洞類似,將用戶的輸入直接放入可執行文件,這里是shtml文件。

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

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

相關文章

【Linux】基本指令的使用 and 面試常問

1、man 指令使用方法&#xff1a;man Linux指令。功能&#xff1a;相當于字典&#xff0c;查找指令的用法。常用選項&#xff1a;-k&#xff1a;根據關鍵字搜索聯機幫助。num&#xff1a;只在第num章節查找。-a&#xff1a;將所有章節的都顯示出來&#xff0c;比如man printf它…

零基礎 “入坑” Java--- 十六、字符串String 異常

文章目錄一、String1.字符串的不可變性2.字符串的修改3.StringBuilder和StringBuffer4.【字符串練習】4.1 字符串中的第一個唯一字符4.2 字符串最后一個單詞的長度4.3 驗證回文串二、異常1.初識異常2.異常的分類3.異常的處理4.異常處理流程總結5.自定義異常在上一章節中&#x…

梯度下降在大模型訓練中的作用與實現

梯度下降&#xff08;Gradient Descent&#xff09;是深度學習中最核心的優化算法之一。大模型&#xff08;如GPT、BERT&#xff09;在訓練時需要優化數十億甚至上千億的參數&#xff0c;而梯度下降及其變體&#xff08;如SGD、Adam&#xff09;正是實現這一優化的關鍵工具。它…

【JVS更新日志】開源框架、APS排產、企業計劃、物聯網、邏輯引擎7.30更新說明!

項目介紹 JVS是企業級數字化服務構建的基礎腳手架&#xff0c;主要解決企業信息化項目交付難、實施效率低、開發成本高的問題&#xff0c;采用微服務配置化的方式&#xff0c;提供了低代碼數據分析物聯網的核心能力產品&#xff0c;并構建了協同辦公、企業常用的管理工具等&…

Eclipse中導入新項目,右鍵項目沒有Run on Server,Tomcat的add and remove找不到項目

原因分析沒有勾選Dynamic Web Module、Java、JavaScriptDynamic Web Module版本問題解決方法Eclipse中右鍵項目選擇Properties左側點擊project facets勾選Dynamic Web Module、Java、JavaScript&#xff0c;注意Dynamic Web Module版本問題,要和tomcat版本對應。- Dynamic Web …

IntelliJ IDEA 2025系列通用軟件安裝教程(Windows版)

前言 JetBrains系列開發工具&#xff08;如IntelliJ IDEA、PyCharm、WebStorm等&#xff09;是程序員們非常喜愛的集成開發環境。2025年最新版本帶來了更多強大的功能和改進。本教程將詳細介紹如何在Windows系統上安裝JetBrains 2025系列軟件。 最近挖到一個寶藏級人工智能學習…

烏鶇科技前端二面

1. 你能給我介紹一下你參與的重要項目&#xff0c;并重點介紹一下做的內容?通俗解釋&#xff1a; 挑一個你覺得最拿得出手、技術含量最高的項目&#xff0c;說說這個項目是干什么的&#xff08;比如一個電商網站、一個后臺管理系統&#xff09;&#xff0c;你在里面具體負責了…

《c++面向對象入門與實戰》筆記

前年的書&#xff0c;翻出來整理一下7章.指針指針 sizeof為4*指針 sizeof為 所指類型的sizeof注意free后置空&#xff0c;避免野指針11章.類

easyExcel生成多個sheet的動態表頭的實現

在使用 EasyExcel 實現“多個 Sheet 且每個 Sheet 表頭是動態的”需求時&#xff0c;思路如下&#xff1a;? 實現思路概述 EasyExcel 的 ExcelWriter 支持多個 Sheet 寫入。每個 Sheet&#xff1a; 使用 WriteSheet 創建&#xff1b;可以綁定一個動態生成的表頭 List<List&…

SQL 連接類型示例:內連接與外連接

SQL 連接類型示例&#xff1a;內連接與外連接 示例數據表 假設我們有兩個表&#xff1a; employees 表:emp_idemp_namedept_id1張三1012李四1023王五1034趙六NULLdepartments 表:dept_iddept_name101銷售部102技術部104財務部1. 內連接 (INNER JOIN) 內連接只返回兩個表中匹配的…

Ubuntu安裝gpu驅動,cuda

系統初始化 1、安裝基礎軟件 apt-get update apt-get -y install openssh-server openssh-client apt-utils freeipmi ipmitool sshpass ethtool zip unzip nano less git netplan.io iputils-ping mtr ipvsadm smartmontools python3-pip socat conntrack libvirt-clients li…

ctfshow_源碼壓縮包泄露

根據題目信息直接dirsearch解壓下來一個.txt文件&#xff0c;一個index.phpflag{flag_here}不對那么就去看index.php也沒有東西&#xff0c;于是查看wp發現是訪問/fl000g.txt這才是對的還有很多源碼泄露需要去了解? git源碼泄露? svn源碼泄露? DS_Store 文件泄露? 網站備份…

Python 程序設計講義(54):Python 的函數——函數概述

Python 程序設計講義&#xff08;54&#xff09;&#xff1a;Python 的函數——函數概述 目錄Python 程序設計講義&#xff08;54&#xff09;&#xff1a;Python 的函數——函數概述一、函數的類型1、內置函數2、自定義函數二、調用函數Python 提供了函數機制&#xff0c;把實…

學習Python中Selenium模塊的基本用法(3:下載瀏覽器驅動續)

前一篇文章主要介紹下載針對火狐瀏覽器的WebDriver&#xff0c;寫那篇文章時才找到能夠下最新版本Chrome的WebDriver地址&#xff08;參考文獻6&#xff09;&#xff0c;本文繼續學習并驗證針對Chrome瀏覽器的WebDriver下載和使用方法。Chrome的WebDriver版本與操作系統相關&am…

AIDL當Parcelable序列化的數據類通信時報“Class not found when unmarshalling“找不到該類時的解決方案

1. 報錯棧 &#xff1a;cusText這個類找不到 2 16:01:29.796 1044 5718 E Parcel : Class not found when unmarshalling: com.cus.sdk.cusText 08-02 16:01:29.796 1044 5718 E Parcel : java.lang.ClassNotFoundException: com.cus.sdk.cusText 08-02 16:01:29.796 1…

Django模型查詢與性能調優:告別N+1問題

文章目錄一、查詢基礎QuerySet 詳解一對多關聯查詢多對多關聯查詢二、N1查詢問題問題分析檢測方法解決方案三、高級查詢優化values()values_list()values()和values_list()對比Q() 對象復雜查詢查看生成的 SQL四、項目實戰場景實戰一、查詢基礎 QuerySet 詳解 Django 中通過模…

PyTorch 中 Tensor 統計學函數及相關概念

文章目錄PyTorch 中 Tensor 統計學函數及相關概念一、引言二、基礎統計學函數&#xff08;一&#xff09;torch.mean()——均值計算&#xff08;二&#xff09;torch.sum()——總和計算&#xff08;三&#xff09;torch.prod()——元素積計算&#xff08;四&#xff09;torch.m…

淺拷貝與深拷貝的區別

淺拷貝和深拷貝是兩種不同的對象復制方式&#xff0c;主要區別在于它們如何處理對象內部的引用類型字段。淺拷貝 (Shallow Copy)特點&#xff1a;只復制對象本身&#xff08;基本類型字段&#xff09;和對象中的引用&#xff08;地址&#xff09;不復制引用指向的實際對象原始對…

腳本統計MongoDB集合表數據量

腳本&#xff1a; #!/bin/bashipxxx.xx.xx.xx portxxxx dbxxxdb #user #passwmongo -host ${ip}:${port} <<EOF 2>/dev/null|grep -vE version|not match|session|compressors||Warning|delivers|upcoming|installation|https|switched|bye >collec use ${db}; sho…

圖漾AGV行業常用相機使用文檔

文章目錄1.圖漾相機設置IP1.1 前期準備2.FM851-E2相機2.1 FM851-E2適用場景2.2 FM851-E2 IO線和數據線定義2.2.1 IO接口定義2.2.2 數據接口線2.2.3 相機正面安裝方向2.2.4 相機IO指示燈2.3 FM851-E2/FM855-E2-7相機RGB顏色異常【解決措施1】&#xff1a;【解決措施2】&#xff…