首页 > 其他分享 >关于ctfshow的web题目的文件包含题目的思考

关于ctfshow的web题目的文件包含题目的思考

时间:2024-08-27 12:40:56浏览次数:19  
标签:web PHP 题目 请求 GET url ctfshow input php

今日深思两个题目

ctfshow的web方向的web3和web4

开始有疑惑了:

<?php include($_GET['url']);?>

这两个题目都是这句话

我一眼看上去是文件包含,我发现访问到一些目录下的文件,比如etc/passwd,是能够回显的

第三题的write_up是利用php伪协议去实现渗透

第四题的write_up是利用网站nignx文件日志里面写一句话木马,再用中国蚁剑连接

我在对比了两题的信息点之后我发现,在做完第三题之后以同一个手段去做第四题的时候,就出现了一点问题:不支持php的伪协议了......我自己的理解是:服务器后端开始对传入的url进行过滤了,但是具体的规则对我来说还是未知

在我全部写完之后,返回来的时候用文件日志写马的手段去做web3的时候成功了

接下来主要思考两个点:

1.php的伪协议直连:

PHP伪协议详解-CSDN博客这一篇博客已经写的很详细了,我用自己的话解释就是让url的值包含服务器文件系统中的某一个库,然后再通过这个库去运行命令(ls,cat......),以下挂上我和AI的问答

我的疑问有两个:

1.为什么GET这个方法可以带有 这个命令?是传参吗?

2.GET /?url=php://input HTTP/1.1这个请求头,url的值为php://input是不是对应了 这样php后端在接受到这个参数的时候,就会调用include去包含到这个通过GET请求传回来的值

题目解释:

PHP代码 include($_GET['url']); 表示服务器将尝试包含并执行通过GET请求的url参数指定的文件或伪协议。在这个场景中,攻击者可以通过构造特定的GET请求来利用这个漏洞。

请求分析:

请求的格式是标准的HTTP GET请求,但是它包含了一个非标准的部分:请求正文(body)。通常,GET请求不会包含请求正文,因为数据是通过URL的查询字符串传递的。然而,在这个例子中,请求正文包含了PHP代码。

疑问解答:

  1. 为什么GET这个方法可以带有 <?php system("cat ctf_go_go_go"); ?> 这个命令?是传参吗?
    • 正常情况下,GET请求不会包含请求正文。这里的请求正文 <?php system("cat ctf_go_go_go"); ?> 是通过php://input伪协议传递的。这不是标准的GET请求行为,而是利用了PHP脚本中的一个漏洞:include($_GET['url']); 没有对url参数进行适当的过滤或验证,导致攻击者可以通过url参数指定php://input,然后通过请求正文传递PHP代码。
  2. GET /?url=php://input HTTP/1.1这个请求头,url的值为php://input是不是对应了 <?php include($_GET['url']);?> 这样php后端在接受到这个参数的时候,就会调用include去包含到这个通过GET请求传回来的值?
    • 是的,你的理解是正确的。当url参数被设置为php://input时,PHP脚本会尝试通过include语句包含php://input伪协议指向的资源。由于php://input指向当前请求的请求正文,因此PHP脚本实际上会执行请求正文中的PHP代码。在这个例子中,请求正文是 <?php system("cat ctf_go_go_go"); ?>,这将导致服务器执行这个PHP代码,执行system("cat ctf_go_go_go")命令,这通常用于在服务器上执行操作系统命令。

2.网站日志写马,蚁剑连接

为什么可以做到这样子的手段?或者换句话说是为什么呢?其实网站日志写马然后蚁剑连接,一句话就描述完了,但是这个过程不重要,重要的是心法,也就是为什么可以用这样的方法去做?

思考:是不是所有的网站都可以往日志里面写马,写马是通过useragent这一个请求头项来写的,那么只要网站有记录请求的意愿,以及针对客户端的日志信息的过滤较弱,就可以往里面写木马

在往下思考前,我们来思考一个问题:写了木马之后,中国蚁剑是怎么连上的呢

在写下了之后,我们来详解:意思为XXXX是php的代码来执行,@意思是不提示报错,直接运行eval当中的内容,$_POST['cmd']意思为cmd这个变量,那么如果对cmd的这个属性传入一个ls,那么服务器就实际上执行的是eval(ls)这个命令,那么工具的连接实际上就是一次有一次的传入某一些参数来进行对服务器的操作(此处也不做详细解释,详情请看Web安全-一句话木马_yijuhuamuma-CSDN博客)那么阻挡我们这个手段的措施有哪些呢?从几个方面分析:
如果php或者其他语言本身对系统命令调用十分严格:比如php的安全模式safemode打开了,或者是在系统层面上禁用了shell_exc这个函数,使得php本身不能通过eval函数调用系统的命令,那么这个一句话木马当中,虽然存在了eval("ls")的命令,同样不能执行命令,执行不了命令,那么工具连接不上就很正常了

标签:web,PHP,题目,请求,GET,url,ctfshow,input,php
From: https://www.cnblogs.com/Needingcen/p/18382437

相关文章

  • 网站提示500.12 服务器错误:Web 服务器上的应用程序正在重新启动怎么办
    当网站提示 500.12InternalServerError 并指出“Web服务器上的应用程序正在重新启动”时,这通常意味着IIS(InternetInformationServices)正在重新启动一个ASP.NET应用程序池。这种情况通常是由于应用程序池的配置问题、应用程序错误或资源问题引起的。以下是解决 500......
  • 网站提示500.11 服务器错误:Web 服务器上的应用程序正在关闭怎么办
    当网站提示 500.11InternalServerError 并指出“Web服务器上的应用程序正在关闭”时,这通常意味着应用程序池(ApplicationPool)在IIS(InternetInformationServices)服务器上已停止运行或正在重启过程中。这种情况通常发生在ASP.NET应用程序中。以下是解决 500.11Internal......
  • vue-cli中webpack-chain 与 configureWebpack 常用配置
    vue-cli文档1.webpack-chain1.定义通过链式调用操作webpack配置对象。(chain:链子)直接修改配置对象chainWebpack通过链式编程的形式,来修改默认的webpack配置2.包含的对象ChainedMap和ChainSet1.ChainedMap//1、从Map移除所有配置clear()//2、通过键值从Map......
  • Web端3D模型轻量化工具HOOPS:建筑行业数字化转型的助推者!
    随着数字化技术的飞速发展,建筑行业也在不断寻找新的技术手段来提供高产能和建筑质量。其中,Web端3D模型轻量化工具HOOPSCommunicatorSDK在建筑行业中的应用不断地得到了市场的广泛注意和应用。本文将深入探讨HOOPSCommunicator在建筑行业中的应用及其影响。申请HOOPSComm......
  • Axure设计之Web端交互元件库
    一个优秀的Web产品不仅需要强大的功能支撑,更需要直观、美观且易于操作的用户界面(UI)来提升用户体验。AxureRP,作为一款专业的原型设计工具,凭借其强大的交互设计能力和丰富的元件库,成为了众多UI/UX设计师和产品经理的首选。推荐一款Axure设计必备元件库“Web端交互元件库”以其全......
  • 远程观看群晖里面的视屏(webdav)
    前言本文使用webdav服务加tvbox来实现远程播放群晖中的视频,关于webdav服务曾在[[黑群晖同步obsidian]]中提及。本次也是使用类似的操作方式配置黑群晖配置webdav并创建共享文件夹为了方便,此处我直接复制了黑群晖同步obsidian这篇博客中相关内容首先下载套件,在套件......
  • vue-cli中chainWebpack的使用
    前言在项目开发中我们难免碰到需要对webpack配置更改的情况,今天就主要来讲一下在vue.config.js中对一些配置的更改,简单介绍一下loader的使用;用configureWebpack简单的配置;用chainWebpack做高级配置;包括对loader的添加,修改;以及插件的配置1、首先简单介绍一下webpack中loader的简......
  • playwright中处理web页面的alert、confirm、prompt弹框
    在selenium中,自动化测试经常会遇到各种弹框:alert、confirm、prompt。这些都是正常的业务中会遇到的情况。所以我们在学习playwright框架时,这些情况也是必不可免的。今天就给大家分享一下playwright框架中对这三种弹框的处理。首先了解一下这三种弹框的区别:alert:只有确定......
  • 从主流技术架构视角剖析 Java Web 项目的性能测试策略与挑战
    随着互联网应用的不断发展,JavaWeb项目在企业级应用中占据了重要地位。然而,如何在复杂的技术架构下,确保项目的高性能和稳定性,成为了每个开发与测试团队无法回避的难题。今天,我们将从主流技术架构的视角,深度剖析JavaWeb项目的性能测试策略与面临的挑战,为你揭开性能优化的神......
  • Request processing failed:MyBatisSystemException 黑马web开发课程P152中可能出现的
    该异常的最后一句,通过翻译,大概是:   [dispatcherServlet]:servlet.service()forservlet[dispatcherServlet]在路径[]的上下文中抛出异常[请求处理失败:MyBatisSystemException]    经过对代码的检查,发现controller,sevice,dao层业务逻辑都没有问题dao层的map......