Linx命令突破长度限制突破方法

 这段代码限制了输入的长度。我们需要想办法突破他的限制。

第一步

我们先尝试何种情况下会执行我们输入的命令。因为有长度限制所以我们先尝试ID这个命令的执行 。我们先上官网查看shell_exec的描述与示例。

 发现如果想要让shell_exec函数执行命令需要将命令用单引号引起来。由于查询到了没有过多观察发现加上单引号还是无法让shell_exec执行命令。

通过仔细观察代码发现,在第一步写入时,已经为输入加上了单引号,不需要我们 去加上引号。

因为输入限制我们只能执行较短的命令,无法执行较长的命令。

第二步,寻找突破口

         因为输入限制直接执行的命令对于我们来说并没有多大的用处。

        所以我们可以通过写入的方式将命令写入到文件中,但写入的命令也很长。但我们可以通过重定向将文件名写入到文件之中,所以我们可以通过写入一些文件通过拼接的方式将文件名拼接成代码,然后执行文件,实现突破限制。所以寻找最短的写入命令,然后发现可以用使用登录的命令W>。经过实验发现使用>符号也可以写入文件。因为linux中重要语法无误就能够被执行。还要寻找一种排序方法进行排序写入,毫无疑问时间顺序是个不错的选择,所以写入文件的顺序就需要好好安排了。但因为在linux中用ls打印出文件名时默认用换行符分割文件名。所以我们还需要将这个换行符转义让他不再生效,否则写入文件的文件名无法拼接成功。

遇到的问题

但最开始使用命令写入后发现并没有生成文件,查看语法后发现并没错误,最后发现此目录的所属组和所属用户是root,其他用户和组成员只有读取的权限并没有写入的权限。是由于权限不足导致的现象。

 由于一时考虑不周全我将html文件的权限都升至了777,但到了将文件名安照时间顺序写入文件后执行文件时发现并没有反应。重新排错发现虽然将html文件设置为其他用户可以读写后,在其文件下的创建的文件任然只有root用户可以读写导致写入的0文件之中并没有写入数据。

为了实现这次复现只能修改 html文件的所属用户与组。但通过实践发现还是有一点小问题。有的文件无法创建。可能是我之前输入命令时多写了一位导致超出了位数限制,直接丢弃。还有写入代码是需要注意代码的写入顺序,使用ls -t>0命令时,他会安照写入的时间顺序从后向前打印,也就是最后写入的最先写入到文件0中。没有掌握好如何消除默认的那个换行符。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值