做题(1)

2023-09-12 22:50:56

1.fileinclude

打开 发现提示flag在flag.php里边

查看页面源代码

$lan = $_COOKIE['language'];

这句话是关键 变量lan是用cookie传参的

@include("english.php");

这句话表明了文件包含 include函数用php伪协议 filer绕过

@include($lan.".php");

这句话表明了变量lan是和后边的php拼接的 所以传参的时候就不用在加.php了

分析完代码 用bp抓包换cooike的值

Cookie: language=php://filter/read=convert.base64-encode/resource=/var/www/html/flag 

base64解密得到答案 cyberpeace{5d4463d367bc49c7767a96cfec72c6ee}

2.fileclude

 

分析源码:

get传参 file1,file2

file1,file2不能为空

涉及到一个函数:

file_get_contents()函数,它是PHP中最常用的文件处理函数之一。

file_get_contents()函数用于读取文件中的内容,并将其作为字符串返回。它通常用于读取文本文件或从远程URL获取内容。

要让file2强等于hello ctf

文件包含file1

这里也是用php伪协议

file_get_contents可以用php://input绕过

文件包含用php://filter绕过 

payload:

file1=php://filter/convert.base64-encode/resource=flag.php&file2=php:input

php://input还需要传参post hello ctf

得到base64编码 解码 得到flag

cyberpeace{301551117bf02b4c38abeebf68998878}

 3.file_include

打开发现是文件包含

get传参filename 用filter来绕过

发现用正常的filter绕过不成功 去百度了一下filter绕过方式 发现了很多不一样的绕过姿势

用手测?filename=php://filter//convert.iconv.SJIS*.UCS-4*/resource=flag.php 可以绕过 换了一个过滤器

 

4.catcat-new 

进入环境,先用dirsearch扫描一下

这题扫描也没扫出来

看了别人的wp 发现了新的知识点

点击副页发现了这个url

观察URL,可以发现URL上使用get请求传递了一个名为file的参数,所以猜测可能存在文件包含漏洞。

在URL上传递参数file=../../../etc/passwd发现存在漏洞

读取当前进程的命令行参数?file=../../../../proc/self/cmdline,发现有一个通过python启动app.py的命令。 所以可以得出该网站使用Python框架,并且因为有app.py可知使用的是flask框架。 

解体思路:Linux系统敏感文件,flask_session_cookie_manager伪造session并执行,session存储在cookie中

以我现在的能力做不出来 先去了解了知识点的这些东西

XCTF-Web-catcat-new_weixin_45723896的博客-CSDN博客 

大佬博客 一周之内会复现成功

5.Web_php_include 

 

重点在include($page),使用了include这个文件包含函数,被include包含的$page通过get方式传入且可控。所以存在文件包含漏洞。但在判断中通过strstr过滤了"php://"

当传入的page存在php://时候替换为空

可以利用php伪协议。而strstr是区分大小写的,所以可以通过大小写绕过过滤

首先通过大小写及报错,确定是linux系统

这时候就可以利用php伪协议+linux命令执行语句来做

也可以用data协议来做

data://伪协议可以执行php代码,格式如下:

data://text/plain,要执行的代码

如果特殊字符被过滤,还可以使用base64编码

data://text/plain;base64,编码后的代码 

?page=data://text/plain;base64,PD9waHAgc3lzdGVtKCdscycpPz4= 

发现了flag文件 再次编码之后放包  ?page=data://text/plain;base64,PD9waHAgc3lzdGVtKCdjYXQgZmw0Z2lzaXNpc2gzcjMucGhwJyk/Pg==

<?php system('cat fl4gisisish3r3.php')?> 

得到flag

 

 

知识点

 1.2.3题

文件包含漏洞

也是一种“注入型漏洞”,其本质就是输入一段用户能够控制的脚本或者代码,并让服务器端执行。

    require(),找不到被包含的文件时会产生致命错误,并停止脚本运行。
    include(),找不到被包含的文件时只会产生警告,脚本将继续运行。
    include_once()与include()类似,唯一区别是如果该文件中的代码已经被包含,则不会再次包含。
    require_once()与require()类似,唯一区别是如果该文件中的代码已经被包含,则不会再次包含。

 

过滤器
字符串过滤器

string.rot13

string.rot13(自 PHP 4.3.0 起)使用此过滤器等同于用 str_rot13()函数处理所有的流数据。

str_rot13—对字符串执行ROT13转换. ROT13编码简单地使用字母表中后面第13个字母替换当前字母,同时忽略非字母表中的字符。编码和解码都使用相同的函数,传递一个编码过的字符串作为参数,将得到原始字符串。

string.toupper

string.tolower(自 PHP 5.0.0 起)使用此过滤器等同于用 strtolower()函数处理所有的流数据。

strtoupper—将字符串转化为大写

string.tolower

(自 PHP 5.0.0 起)使用此过滤器等同于用 strtolower()函数处理所有的流数据。

strtolower—将字符串转化为小写

string.strip_tags

使用此过滤器等同于用 strip_tags()函数处理所有的流数据。可以用两种格式接收参数:一种是和strip_tags()函数第二个参数相似的一个包含有标记列表的字符串,一种是一个包含有标记名的数组。

strip_tags—从字符串中去除 HTML 和 PHP 标记.该函数尝试返回给定的字符串str去除空字符、HTML 和 PHP 标记后的结果。它使用与函数fgetss()一样的机制去除标记。

转换过滤器

如同 string.* 过滤器,convert.* 过滤器的作用就和其名字一样。转换过滤器是 PHP 5.0.0 添加的。对于指定过滤器的更多信息,请参考该函数的手册页。

convert.base64

convert.base64-encode和 convert.base64-decode使用这两个过滤器等同于分别用base64_encode()和base64_decode()函数处理所有的流数据。convert.base64-encode支持以一个关联数组给出的参数。如果给出了line-length,base64 输出将被用line-length个字符为 长度而截成块。如果给出了line-break-chars,每块将被用给出的字符隔开。这些参数的效果和用base64_encode()再加上 chunk_split()相同。

convert.quoted

convert.quoted-printable-encode和convert.quoted-printable-decode使用此过滤器的decode版本等同于用 quoted_printable_decode()函数处理所有的流数据。没有和convert.quoted-printable-encode相对应的函数。convert.quoted-printable-encode支持以一个关联数组给出的参数。除了支持和convert.base64-encode一样的附加参数外,convert.quoted-printable-encode还支持布尔参数binary和 force-encode-first。convert.base64-decode只支持line-break-chars参数作为从编码载荷中剥离的类型提示。

convert.iconv.*

这个过滤器需要php支持 iconv ,而iconv是默认编译的。使用convert.iconv.*过滤器等同于用iconv()函数处理所有的流数据。

iconv — 字符串按要求的字符编码来转换

convery.iconv.*的使用有两种方法:

1.convert.iconv.<input-encoding>.<output-encoding>

2.convert.iconv.<input-encoding>/<output-encoding>

支持的字符编码有以下几种 

UCS-4*

UCS-4BE

UCS-4LE*

UCS-2

UCS-2BE

UCS-2LE

UTF-32*

UTF-32BE*

UTF-32LE*

UTF-16*

UTF-16BE*

UTF-16LE*

UTF-7

UTF7-IMAP

UTF-8*

ASCII*

还有压缩过滤器,加密过滤器,这里不做过多阐述

可见大佬博客 详解php://filter以及死亡绕过_w0s1np的博客-CSDN博客

4题

/etc/passwd

该文件储存了该Linux系统中所有用户的一些基本信息,只有root权限才可以修改。其具体格式为 用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell(以冒号作为分隔符)

/proc/self

proc是一个伪文件系统,它提供了内核数据结构的接口。内核数据是在程序运行时存储在内部半导体存储器中数据。通过/proc/PID可以访问对应PID的进程内核数据,而/proc/self访问的是当前进程的内核数据。

/proc/self/cmdline

该文件包含的内容为当前进程执行的命令行参数。

/proc/self/mem

/proc/self/mem是当前进程的内存内容,通过修改该文件相当于直接修改当前进程的内存数据。但是注意该文件不能直接读取,因为文件中存在着一些无法读取的未被映射区域。所以要结合/proc/self/maps中的偏移地址进行读取。通过参数start和end及偏移地址值读取内容。

/proc/self/maps

/proc/self/maps包含的内容是当前进程的内存映射关系,可通过读取该文件来得到内存数据映射的地址。

flask-session结构

flask_session是flask框架实现session功能的一个插件。其session结构分为三部分:序列化内容+时间+防篡改值,这三部分内容加密后以符号 “.”来进行分隔。flask_session默认session的储存是在用户Cookie中。但也可以指定存储在数据库,缓存中间件,服务器本地文件等等之中。

/proc/self/environ

/proc/self/environ文件包含了当前进程的环境变量

/proc/self/fd

这是一个目录,该目录下的文件包含着当前进程打开的文件的内容和路径。这个fd比较重要,因为在Linux系统中,如果一个程序用 open() 打开了一个文件,但是最终没有关闭它,即使从外部(如:os.remove(SECRET_FILE))删除这个文件之后,在/proc这个进程的fd目录下的pid文件描述符目录下还是会有这个文件的文件描述符,通过这个文件描述符我们即可以得到被删除的文件的内容。通过/proc/self/fd/§pid§来查看你当前进程所打开的文件内容。

当pid不知道时,我们可以通过bp爆破,pid是数字。

/proc/self/exe

获取当前进程的可执行文件的路径

 

 

 

更多推荐

前端JavaScript页面生命周期: DOMContentLoaded, load, beforeunload, unload

🎬岸边的风:个人主页🔥个人专栏:《VUE》《javaScript》⛺️生活的理想,就是为了理想的生活!目录引言1.DOMContentLoaded1.1属性1.2API1.3应用场景1.4示例代码2.load2.1属性2.2API2.3应用场景3.beforeunload3.1属性3.2API3.3应用场景3.4示

Python爬虫在电商数据获取与分析中的应用

前言随着电商平台的兴起,越来越多的人开始在网上购物。而对于电商平台来说,商品信息、价格、评论等数据是非常重要的。因此,抓取电商平台的商品信息、价格、评论等数据成为了一项非常有价值的工作。本文将介绍如何使用Python编写爬虫程序,抓取电商平台的商品信息、价格、评论等数据。一、准备工作在开始编写爬虫程序之前,我们需要准备

爬虫技术对携程网旅游景点和酒店信息的数据挖掘和分析应用

导语爬虫技术是一种通过网络爬取目标网站的数据并进行分析的技术,它可以用于各种领域,如电子商务、社交媒体、新闻、教育等。本文将介绍如何使用爬虫技术对携程网旅游景点和酒店信息进行数据挖掘和分析,以及如何利用Selenium库和代理IP技术实现爬虫程序。概述携程网是中国领先的在线旅行服务公司,提供酒店预订、机票预订、旅游度假

CSS的学习

1.认识CSSCSS叫做"层叠样式表"“层叠样式表”样式-->大小,位置,间距,颜色,字体,表框背景…统称为"样式",描述了一个网页长什么样子~层叠-->针对一个html的元素/标签,可以同时应用多组CSS样式~~多组样式会叠加在一起~~CSS描述的是页面的样式,具体来说,就是描述一个任意一个页面的元素,大小/位置/字

【解刊】IEEE旗下Trans系列,中科院1区TOP,国人占比79.388%排名第一!(附IEEE名单)

计算机领域•好刊解读IEEETransactionsonCybernetics出版社:IEEEISSN:2168-2267eISSN:2168-2275检索数据库:SCIE&EI双检数据库检索年份:2013年出刊频率:月刊,一年一卷,一卷12期,最新一期Issue10•Oct.-2023影响因子(2022):11.8影

分类预测 | MATLAB实现WOA-CNN-LSTM-Attention数据分类预测

分类预测|MATLAB实现WOA-CNN-LSTM-Attention数据分类预测目录分类预测|MATLAB实现WOA-CNN-LSTM-Attention数据分类预测分类效果基本描述模型描述程序设计参考资料分类效果基本描述1.MATLAB实现WOA-CNN-LSTM-Attention数据分类预测,运行环境Matla

Spring Boot 整合 分布式搜索引擎 Elastic Search 实现 数据聚合

文章目录⛄引言一、数据聚合⛅简介⚡聚合的分类二、DSL实现数据聚合⏰Bucket聚合⚡Metric聚合三、RestAPI实现数据聚合⌚业务需求⏰业务代码实现✅效果图⛵小结⛄引言本文参考黑马分布式ElasticsearchElasticsearch是一款非常强大的开源搜索引擎,具备非常多强大功能,可以帮助我们从海量数据中

Qt扩展-KDDockWidgets 简介及配置

Qt扩展-KDDockWidgets简介及配置]一、概述二、编译KDDockWidgets库1.CmakeGui中选择源文件和编译后的路径2.点击Config,配置好编译器3.点击Generate4.在存放编译的文件夹输入如下命令开始编译三、qmake配置一、概述kdockwidgets是一个由KDAB组织编写的qtd

【Azure上云项目实战】 合规性的身份验证与访问控制:在 Azure 中实现符合 PCI DSS 要求的架构设计

文章目录一、开篇写在前面二、项目背景及介绍三、AzurePCIDSS项目架构及组件四、身份验证、访问控制4.1三层防御控制4.2三层部署结构五、跳板机六、与PCIDSS要求的关系七、该篇总结(重要)写在文末一、开篇写在前面各位博客阅读者们以及对云计算感兴趣的小伙伴们,微软Azure云的基础部分更新已经接近了尾声,从上周

prize_p1

文章目录解题过程代码审计思路问题解决数组绕过preg_match__destruct的触发修改phar文件以及签名phar://支持的后缀(其他方法)题解方法一(数组绕过)方法二(gzip绕过)解题过程源代码<METAhttp-equiv="Content-Type"content="text/html;charset

【UE 粒子练习】02——使用一些常用的模块来创建粒子

目录效果步骤一、创建材质二、创建粒子2.1必需模块2.2初始大小模块2.3初始位置模块2.4初始速度模块2.5生命周期模块2.6加速-》恒加速度模块2.7生成模块2.8生命内颜色模块2.9尺寸-》大小随速度模块2.10碰撞-》Actor碰撞模块2.11光源-》光照模块效果步骤一、创建材质1.新建一个材质,这里命名为“M

热文推荐