首頁 運維 安全 利用php7新特性繞過查殺正規

利用php7新特性繞過查殺正規

Mar 04, 2020 am 10:45 AM
php7

利用php7新特性繞過查殺正規

最近在研究webshel​​l免殺,抽出心得的一個新穎的點。原因是突然想到既然php7.1不能利用可變函數的assert,那就利用php7的新特性來繞過查殺正則,最後繞過某盾和「某d0g」。

實驗環境在7.1.9,所有馬兒在php7以下的環境都無法使用。

D盾規則庫(最新):20191227

某d0g因為可能會因為用其產品測試,導致侵權行為,為了防止被舉報所以就不放圖了。

前置實驗

某盾牌

首先以下程式碼

利用php7新特性繞過查殺正規

利用php7新特性繞過查殺正規

利用php7新特性繞過查殺正規#直接誤報了。

因此,直接傳參到eval裡面是不切實際的。

所以接下來我們要利用函數,配合php新特性來繞過它。

某d0g

而對於某d0g,只要以下程式碼

#就會讓其誤報。

因此在寫免殺馬的時候,post中的變量,不要出現在eval中的字串中。就像上面`b`一樣,儘管他在`eval`中是以變數的形式出現的。有了這個基礎就可以進入正題了。

利用php7新特性繞過查殺正規PHP7.0.x

[php手冊-php7.0.x新功能]( https://www.php.net/manual/zh/migration70.new-features.php )

返回值類型申明

php7增加了返回值類型聲明的支持,在定義函數時增加一個`:類型`便可以了。

例如:利用php7新特性繞過查殺正規

就是函數傳回值類型要為int。否則會強制轉換或顯示語法錯誤。 利用php7新特性繞過查殺正規

如果未更新此特性的查殺軟體,就會不認識此函數,導致被繞過。

例如:

利用php7新特性繞過查殺正規

可以用查殺軟體測試一下。

發現沒有被偵測到。

利用php7新特性繞過查殺正規

可以使用。

null合併運算子

由於日常使用中存在大量同時使用三元表達式和`isset()`的情況, 新增了null合併運算子(*??*) 這個語法糖。如果變數存在且值不為**`NULL`**, 它就會傳回自身的值,否則傳回它的第二個運算元利用php7新特性繞過查殺正規

簡單來說:

利用php7新特性繞過查殺正規##如果運用`? ? `符號,查殺軟體不會理解著個處理過程 ,可能就會導致繞過。

就像以下程式碼就可以繞過某d0g利用php7新特性繞過查殺正規

#再利用函數呼叫

利用php7新特性繞過查殺正規

##可以發現已經過了D盾

測試一下可用性

#接下來看看7.1的特性吧

php7.1.x

[php手冊-php7.0.x新功能]( https://www.php.net/manual/zh/migration71.new-features.php ) 利用php7新特性繞過查殺正規可為空(Nullable)類型

參數以及傳回值的類型現在可以透過在類型前加上一個問號使之允許為空。當啟用這個特性時,傳入的參數或函數傳回的結果要不是給定的類型,就是 null 。

###比7.1的特性多了個 `? `函數傳回值若不是給定類型,則為空。 ######使用相同的程式碼:#########################不意外###

利用php7新特性繞過查殺正規

過了D盾

短數組語法

#短數組語法([])現在作為list()語法的一個備選項,可以用於將數組的值賦給一些變數(包括在foreach中)。

這裡選用中括號 `[]類型`的清單來示範。

利用php7新特性繞過查殺正規

這樣,就把陣列的值分別賦給了` $c`,`$d`.`$c='a';$d='b' ;`

這樣,就可以用這個少用的特性,來繞過靜態查殺

#先寫一個最簡單的:

利用php7新特性繞過查殺正規

#然後就過了某d0g。自行測試。

之後就可以配合函數。就像這樣:

利用php7新特性繞過查殺正規

查殺一下

利用php7新特性繞過查殺正規

#測試可用性

利用php7新特性繞過查殺正規


利用php7新特性繞過查殺正規

##list()現在支援鍵名

利用php7新特性繞過查殺正規

官方說明:現在list()和它的新的[]語法支援在它內部去指定鍵名。這意味著它可以將任意類型的數組 都賦值給一些變數(與短數組語法類似)

利用php7新特性繞過查殺正規這個很繞,看一下例子也許就會明白了。

eg:

利用php7新特性繞過查殺正規稍微改改就能過某d0g(自行測試):

利用php7新特性繞過查殺正規

試試D盾

利用php7新特性繞過查殺正規

報了一級

再次借助自訂函數。


#成功過D,測試可用性。

利用php7新特性繞過查殺正規

支援為負的字串偏移量

官方說明

利用php7新特性繞過查殺正規現在所有支援偏移量的字串運算函數都支援接受負數作為偏移量,包括透過[]或{}操作字串下標。在這種情況下,一個負數的偏移量會理解為一個從字串結尾開始的偏移量。

這個在小於7.1版本中,負的偏移量回傳空字符串。

eg:


7.1.x中回傳`s`,但先前的版本回傳` string(0) "" `

想法:我們可以這個拆分字串,使規則識別不出來。最後再配合php的可變變數:

#########這樣就可以過某d0g了。但是對於D盾來說,會辨識拼接字符,和可變變數。報一級`可疑文件`,不得不說這點做的確實很好。 ######結尾######其實還有很多特性,就像`透過define()定義常數數組`,也都可以舉一反三去繞過。而且不只自訂函數,還可以配合類,可變變數等,來繞過靜態查殺。 #########也可以利用 `太空船運算子(組合比較符)`,`整數除法函數 intdiv()`等來繞過動態查殺。 ######更多相關文章,請關注php中文網###web伺服器安全###欄位! ###

以上是利用php7新特性繞過查殺正規的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1672
14
CakePHP 教程
1428
52
Laravel 教程
1333
25
PHP教程
1277
29
C# 教程
1257
24
php7.0安裝了插件還是顯示未安裝怎麼辦 php7.0安裝了插件還是顯示未安裝怎麼辦 Apr 02, 2024 pm 07:39 PM

解決 PHP 7.0 中插件未顯示已安裝問題的方法:檢查插件配置並啟用插件。重新啟動 PHP 以套用配置變更。檢查插件檔案權限,確保其正確。安裝遺失的依賴項,以確保插件正常運作。如果其他步驟都失敗,則重建 PHP。其他可能原因包括外掛程式版本不相容、載入錯誤版本或 PHP 配置問題。

php7.0怎麼安裝mongo擴展 php7.0怎麼安裝mongo擴展 Nov 21, 2022 am 10:25 AM

php7.0安裝mongo擴充的方法:1、建立mongodb使用者群組和使用者;2、下載mongodb原始碼包,並將原始碼包放到“/usr/local/src/”目錄下;3、進入“src/”目錄;4、解壓縮原始碼包;5、建立mongodb檔案目錄;6、將檔案複製到「mongodb/」目錄;7、建立mongodb設定檔並修改設定即可。

php7檢測tcp埠不好用怎麼解決 php7檢測tcp埠不好用怎麼解決 Mar 22, 2023 am 09:30 AM

在php5中,我們可以使用fsockopen()函數來偵測TCP埠。這個函數可以用來開啟一個網路連接和進行一些網路通訊。但是在php7中,fsockopen()函數可能會遇到一些問題,例如無法開啟連接埠、無法連接到伺服器等。為了解決這個問題,我們可以使用socket_create()函數和socket_connect()函數來偵測TCP埠。

PHP 伺服器環境常見問題指南:快速解決常見難題 PHP 伺服器環境常見問題指南:快速解決常見難題 Apr 09, 2024 pm 01:33 PM

PHP伺服器環境常見的解決方法包括:確保已安裝正確的PHP版本和已複製相關檔案到模組目錄。暫時或永久停用SELinux。檢查並配置PHP.ini,確保已新增必要的擴充功能和進行正確設定。啟動或重新啟動PHP-FPM服務。檢查DNS設定是否有解析問題。

如何在系統重啟後自動設置unixsocket的權限? 如何在系統重啟後自動設置unixsocket的權限? Mar 31, 2025 pm 11:54 PM

如何在系統重啟後自動設置unixsocket的權限每次系統重啟後,我們都需要執行以下命令來修改unixsocket的權限:sudo...

php7.0怎麼安裝部署 php7.0怎麼安裝部署 Nov 30, 2022 am 09:56 AM

php7.0安裝部署的方法:1、到PHP官網下載與本機系統對應的安裝版本;2、將下載的zip檔案解壓縮到指定目錄;3、開啟命令列窗口,在「E:\php7」目錄下運行“php -v”命令即可。

在Docker環境中使用PECL安裝擴展時為什麼會報錯?如何解決? 在Docker環境中使用PECL安裝擴展時為什麼會報錯?如何解決? Apr 01, 2025 pm 03:06 PM

在Docker環境中使用PECL安裝擴展時報錯的原因及解決方法在使用Docker環境時,我們常常會遇到一些令人頭疼的問�...

記錄一次用strace診斷php佔用系統資源過高的問題 記錄一次用strace診斷php佔用系統資源過高的問題 May 03, 2024 pm 04:31 PM

本機環境:redhat6.7系統。 nginx1.12.1,php7.1.0,程式碼使用yii2框架問題:本地的web站需要用到elasticsearch服務。當php使用本機伺服器搭建的elasticsearch時,本地的負載都是正常。當我使用aws的elasticsearchservice服務時,本地伺服器出現負載經常過高的情況。查看nginx和php日誌,發現沒有異常。系統的並發連線數也不高。這時候想到我們老闆跟我講的一個strace診斷工具。偵錯過程:找一個php的子程序idstrace-

See all articles