利用正則回溯最大次數上限進行繞過

2021-09-16 14:28:32 字數 999 閱讀 7577

原始碼:

<?php

function is_php($data)

if(empty($_files))

$user_dir = 'data/' . md5($_server['remote_addr']);

$data = file_get_contents($_files['file']['tmp_name']);

if (is_php($data)) else

通過對原始碼分析,可知要求上傳檔案,且檔案內容要通過正則且能rce

正則:/<\?.*[(`;?>].*/is

指匹配<?開頭的中間出現[(`;?>]任一字元的不區分大小寫的,無視換行符的字串。即針對<?php ;<?php ?>等語句。

如何繞過正則且能rce呢?

rerference: php利用pcre回溯次數限制繞過某些安全限制

php 為了防止正規表示式的拒絕服務攻擊(redos),給 pcre 設定了乙個回溯次數上限 pcre.backtrack_limit。我們可以通過 var_dump(ini_get(『pcre.backtrack_limit』));的方式檢視當前環境下的上限。回溯次數上限預設是 100 萬。那麼,假設我們的回溯次數超過了 100 萬,會出現什麼現象呢?preg_match 返回的非 1 和 0,而是 false。

故構建rce指令碼:

print(res.headers)得到flag

正則的回溯引用

q 將下面html片段中正確的標題標籤 到 及其包含的內容匹配出來 我是h1h1 我是divdiv 我是h2h2 我是spanspan 我是h3h3 我是錯誤的h3h4 我是h4h4 複製 上述這個問題的難點包括 必須匹配每個到不能將包含在兩個標題標籤內的標籤匹配到,如我是span 不能匹配格式不正...

最大團問題 回溯法

題目 對於給定的無向圖,找出他的最大團 分析 圖的乙個完全子圖就是乙個團,所以找最大團,通俗點講就是在乙個無向圖中找出乙個點數最多的完全圖 任意兩點之間均有邊相鄰 採用回溯法,對於解空間的子集樹,只有當前節點和所有已選的頂點都相連,才進入左子樹 而當 當前結點加上剩下節點數比最優節點的個數多時 才進...

利用遞迴實現迷宮回溯問題

在乙個8 8的矩陣中,四面都是牆,矩陣中有幾個點不能通過 假設有乙個小球,要到達指定的座標,求出小球走過的路徑。在這裡插入描述 1 圍牆,不能通過 2 目標點 3 已經走過,但是走不通4.策略逆時針找路,即按照 下 右 上 左的順序尋找5.實現思路手動設定起點,使用查詢策略遞迴尋找終點,走到一點,就...