CTF Web的數組巧用

PHP數組繞過intval和preg_match的CTF技巧

原題目

<?php
include("flag.php"); // 引入flag文件,flag變量在這里定義
show_source("index.php"); // 顯示index.php文件的源碼(方便選手查看)// 判斷是否通過GET方式傳入了pangoulin參數
if(isset($_GET['pangoulin'])){$pangoulin = $_GET['pangoulin']; // 獲取pangoulin參數的值// 檢查pangoulin中是否包含數字(0-9),如果有則終止程序并輸出提示if(preg_match("/[0-9]/", $pangoulin)){die("no no no!"); // 包含數字則直接退出}// 判斷pangoulin轉換為整數后是否為真(非0),如果為真則輸出flagif(intval($pangoulin)){echo $flag; // 滿足條件,輸出flag}
}

參數傳遞與數字過濾?:題目要求通過GET傳遞pangoulin參數,但參數值不能包含數字字符(0-9),否則會被preg_match攔截并終止腳本。

intval判斷邏輯 intval($pangoulin)需要返回非零值才能輸出flag。常規字符串(如"abc")經intval轉換結果為0,無法滿足條件。

數組參數在PHP中的獨特特性

使用數組形式傳遞參數(如?pangoulin[]=value)時,PHP會將$_GET['pangoulin']自動解析為數組類型。這種特性在表單處理或API參數傳遞中較為常見。

數組參數的強制轉換問題

調用intval()對數組參數進行強制轉換時,結果會固定返回1。這是PHP的類型轉換機制決定的,數組轉換為整數時總是返回1(非空數組)或0(空數組)。

// 示例:intval對數組的轉換
$val = intval(['a', 'b']); // 結果為1
$emptyVal = intval([]);     // 結果為0

preg_match對數組參數的響應

preg_match()函數接收到數組參數時,PHP會生成Warning級別錯誤,但腳本會繼續執行。這與函數預期接收字符串參數的行為不符,但不會像Fatal Error那樣終止程序。

// 示例:preg_match對數組的響應
preg_match('/\d+/', ['a', 'b']); 
// 輸出:Warning: preg_match() expects parameter 2 to be string, array given

安全建議

處理用戶輸入時應顯式檢查變量類型,避免因自動類型轉換導致邏輯漏洞。使用is_array()filter_input()函數驗證參數類型:

// 類型檢查示例
if (is_array($_GET['pangoulin'])) {// 處理數組邏輯
}// 使用過濾器驗證
$value = filter_input(INPUT_GET, 'pangoulin', FILTER_DEFAULT, FILTER_REQUIRE_SCALAR);
if ($value === null) {// 非標量參數處理
}

實戰利用方法 構造請求URL為:?pangoulin[]=

  • 參數變為空數組
  • 繞過數字檢測
  • intval返回1觸發flag輸出

題目流程圖

技術原理總結

  • PHP數組傳參需在參數名后加[]
  • 類型轉換特性:intval(array)→1
  • preg_match對非字符串參數的容錯處理
// 關鍵代碼邏輯示例
if(isset($_GET['pangoulin'])){$param = $_GET['pangoulin'];if(preg_match("/[0-9]/", $param)) die("Blocked");if(intval($param)) echo $flag;
}

典型應用場景 該技巧適用于需要同時滿足

  • 參數值不能包含特定字符
  • 需要參數經類型轉換后為真值 的CTF題目突破場景。

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

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

相關文章

vue2+elementui使用compressorjs壓縮上傳的圖片

首先是npm install compressorjs 然后新建一個compressorjs.js的文件 import Compressor from "compressorjs";// 默認壓縮配置 const DEFAULT_COMPRESS_OPTIONS {quality: 0.6, // 默認壓縮質量 (0-1)maxWidth: 1920, // 最大寬度maxHeight: 1080, // 最大高度con…

GPIO詳解:不僅僅是輸入輸出那么簡單

GPIO詳解&#xff1a;不僅僅是輸入輸出那么簡單 “別小看一個小小的引腳&#xff0c;它可是 MCU 世界的社交之門。” &#x1f44b; 先打個招呼&#xff1a;什么是 GPIO&#xff1f; GPIO&#xff0c;全稱是 General Purpose Input/Output —— 通用輸入輸出口。 簡單說&…

深度學習5(深層神經網絡 + 參數和超參數)

深層神經網絡簡介 深層神經網絡是機器學習中一種重要的模型&#xff0c;它通過增加網絡的“深度”&#xff08;即隱藏層的數量&#xff09;來提升模型對復雜數據的表示和學習能力。同淺層類似&#xff0c;也分為三個部分&#xff1a; 輸入層&#xff1a;接收原始數據&#xff…

時間復雜度與空間復雜度分析

一、什么是復雜度&#xff1f; 1.1 為什么需要復雜度分析&#xff1f; 假設你寫了兩個程序來解決同一個問題&#xff0c;如何判斷哪個程序更好&#xff1f;我們不能只看運行時間&#xff0c;因為&#xff1a; 不同電腦性能不同同一電腦在不同時刻狀態也不同數據規模不同&#x…

上下文工程:從提示詞到自動化流程的AI應用新范式

上下文工程&#xff1a;從提示詞到自動化流程的 AI 應用新范式 一、背景與概述&#xff1a;從提示詞工程到上下文工程的演進 隨著大語言模型 (LLM) 技術的飛速發展&#xff0c;AI 應用開發正經歷從 “提示詞工程”(Prompt Engineering) 到 “上下文工程”(Context Engineerin…

HTML網頁應用打包Android App 完整實踐指南

技術準備與工具下載 必需工具清單 在開始之前&#xff0c;需要準備以下開發工具&#xff1a; Android Studio官網&#xff1a;https://developer.android.com/studio HBuilderX官網&#xff1a;https://www.dcloud.io/hbuilderx.html 離線SDK下載&#xff1a;https://nati…

簡單 Python 爬蟲程序設計

爬蟲是獲取網頁數據的常用工具&#xff0c;我們一起來設計一個基于 requests 和 BeautifulSoup 的簡單爬蟲&#xff0c;它可以獲取網頁內容并提取文本信息。 所需庫安裝 首先需要安裝兩個必要的庫&#xff1a; pip install requests beautifulsoup4 完整代碼 import reques…

AUTOSAR圖解==>AUTOSAR_AP_EXP_ARAComAPI

AUTOSAR ara::com API詳解 自適應平臺通信API技術詳解 目錄 1. 概述2. ara::com API架構 2.1 Proxy/Skeleton架構2.2 通信方式2.3 服務連接方式 3. 詳細API說明 3.1 Proxy類3.2 Skeleton類3.3 實例標識符3.4 通信組 4. ara::com API狀態管理 4.1 服務生命周期4.2 事件與方法狀…

Spring Boot + 本地部署大模型實現:優化與性能提升

在將大語言模型集成到 Spring Boot 應用中時&#xff0c;性能優化是一個關鍵環節。本地部署的大模型雖然提供了強大的功能&#xff0c;但也可能帶來一些性能挑戰&#xff0c;如響應時間較長、資源占用較高等問題。本文將介紹如何在 Spring Boot 應用中優化本地部署大模型的性能…

QML 鼠標只響應左鍵處理方法

【1】問題描述 默認情況下qml支持左鍵&#xff0c;如果需要支持右鍵&#xff0c;甚至是中鍵那需要設置 【2】設置方法 MouseArea{ id: mouse anchors.fill: parent property int cx: 0 pr…

北方算網亮相2025全球數字經濟大會|共繪數字友好城市建設

7月2日&#xff0c;以“建設數字友好城市”為主題的2025全球數字經濟大會隆重開幕&#xff0c;為構建技術與人、城市與生態和諧共進的全球數字經濟新生態提供交流合作平臺。自7月3日開始&#xff0c;北方算網將在大會集中亮相&#xff0c;先后在多個論壇中發表主題演講&#xf…

Android PNG/JPG圖ARGB_8888/RGB_565?解碼形成Bitmap在物理內存占用大小的簡單計算

Android PNG/JPG圖ARGB_8888/RGB_565?解碼形成Bitmap在物理內存占用大小的簡單計算 Android的Bitmap 是一個用于表示圖像數據的核心類&#xff0c;代表一張圖片在內存中的存儲&#xff0c;Bitmap存儲了圖像的像素信息數據。 Bitmap把圖像理解為像素點組成的二維矩陣&#xff…

力扣網編程55題:跳躍游戲之逆向思維

一. 簡介 前面一篇文章使用貪心算法解決 力扣網55題&#xff1a;跳躍游戲&#xff0c;文章如下&#xff1a; 力扣網編程55題&#xff1a;跳躍游戲之貪心算法-CSDN博客 二. 力扣網編程55題&#xff1a;跳躍游戲之逆向思維 給你一個非負整數數組 nums &#xff0c;你最初位于數…

蒼穹外賣--day12數據統計-Excel報表

1.工作臺1.1實現思路工作臺是系統運營的數據看板&#xff0c;并提供快捷操作入口&#xff0c;可以有效提高商家的工作效率。工作臺展示的數據&#xff1a;①今日數據②訂單管理③菜品總覽④套餐總覽⑤訂單信息名詞解釋&#xff1a;①營業額&#xff1a;已經完成訂單的總金額②有…

鴻蒙應用開發:從網絡獲取數據

一、網絡狀態概述上述任一指標的變化均可視為網絡狀態的改變 二、獲取網絡信息 創建網絡對象 //創建網絡對象 //?表示可傳可不傳 connection.createNetConnection(netSpecifier?:NetSpecifier,timeout?:number):NetConnection;獲取默認激活網絡及其能力 //獲取默認激活網絡 …

探索開源虛擬 Excel 函數模塊:Python 中的 Excel 功能利器

在數據處理和分析的領域中&#xff0c;Excel 一直是一款備受青睞的工具&#xff0c;它提供了豐富多樣的函數&#xff0c;幫助用戶高效地完成各種數據操作。而現在&#xff0c;我&#xff08;董翔&#xff09;開發一個基于 Python 的虛擬 Excel 函數模塊&#xff0c;它將 Excel …

開源 vGPU 方案 HAMi: corememory 隔離測試

本文主要對開源的 vGPU 方案 HAMi 的 GPU Core&Memory 隔離功能進行測試。 省流&#xff1a; HAMi vGPU 方案提供的 Core&Memory 隔離基本符合預期&#xff1a; Core 隔離&#xff1a;Pod 能使用的算力會圍繞設定值波動&#xff0c;但是一段時間內平均下來和申請的 g…

openstack安裝并初始化

openstack安裝并初始化openStack 概述OpenStack 起源什么是Openstackopenstack優勢使用本地倉庫離線安裝系統基本環境設置為系統設置本地倉庫創建openstack-train的倉庫更新系統安裝部署工具一鍵安裝設置橋接網絡通過 Dashboard 體驗 OpenStack 功能創建云主機創建網絡(1)用adm…

解決 Cannot create Swift scratch context

場景復現 Xcode 控制臺輸出&#xff1a; Cannot create Swift scratch context (couldnt create a Clang Importer)Analysis 分析 發生了什么&#xff1f; 在調試 Swift 代碼或在 LLDB 里執行 po/expr 命令時&#xff0c;LLDB 需要為表達式臨時創建一份 “Swift scratch co…

機械時代的計算

1、機械計算起源 最近在想平衡三進制的除法&#xff0c;想看看那么大牛是怎么做的&#xff0c;資料很少&#xff0c;但還是有的&#xff0c;有但是看不懂&#xff0c;也不知靠不靠譜&#xff0c;后面跟著實踐了能行&#xff0c;下面就看看Balanced Ternary Arithmetic&#xff…