目录

web33:【文件包含】

web34:

web35:

web36:多过滤了0-9的数字,用参数逃逸可以不用数字,用字母就可以成功绕过 ,步骤一样,略

web37:

web38:

web39:

web40:[无参函数构造]

web41:【待续】

web42:【/dev/null黑洞&截断符】

web43:【截断符,同上】

web44:【同上】

web45:【同上】

web46:【同上】

web47:【同上】

web48:【方法同上】

web49:【编码,同上】

web50:【空格绕过&占位符?不能用】

web51:【过滤查看命令】

web52:【假的flag】

web53:

web54:【重命名】

web55:【无字母rce】

web56:【post文件待续】


网页的 URL 只能包含两类合法的字符:

URL 元字符:分号(;),逗号(,),斜杠(/),问号(?),冒号(:),at(@),&,等号(=),加号(+),美元符号($),井号(#)
    语义字符:a-z,A-Z,0-9,连词号(-),下划线(_),点(.),感叹号(!),波浪线(~),星号(*),单引号('),圆括号(())

除了以上字符,其他字符出现在 URL 之中都必须转义,规则是根据操作系统的默认编码,将每个字节转为百分号(%)加上两个大写的十六进制字母。

web33:【文件包含】

php://filter伪协议:

可以获取指定文件的源码,但是当他与包含函数结合时,php://filter流会被当做php文件执行。
所以我们一般对其进行编码,让其不执行。从而导致任意文件读取

web34:

比31题多过滤了一个冒号,完全没有影响,步骤一样 略

web35:

多过滤了左尖括号(我们只用右尖括号)和等号(参数c里面没有,只是执行的表达式里面有),步骤一样,略

web36:多过滤了0-9的数字,用参数逃逸可以不用数字,用字母就可以成功绕过 ,步骤一样,略

web37:

文件包含,同时过滤了flag

php data伪协议:数据流封装器,以传递相应格式的数据。可以让用户来控制输入流,当它与包含函数结合时,用户输入的data://流会被当作php文件执行。

web38:

web39:

与38题相比,没有echo $flag,发现用与上一题相同的办法也能得到flag,说明后缀没有什么影响

eg:后缀相当于include(data://text/plain,<?php system("cat flag.php");?>.php),因为前面的php语句已经闭合了,后面的.php会被当成html页面直接显示在页面上

web40:[无参函数构造]

current():返回数组当前元素的值

end():将内部指针指向数组最后一个元素并输出

next():将内部指针指向数组中的下一个元素,并输出[默认指针停留第一项]

prev():将内部指针指向数组中的上一个元素,并输出

reset():将内部指针指向数组中的第一个元素,并输出

web41:【待续】

全部字母都过滤了!!!我不会,看教程也没运行出来

web42:【/dev/null黑洞&截断符】

用截断符截断命令就可以成功绕过

>/dev/null 2>&1语句含义:
1>/dev/null 首先表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,即不显示任何信息。
2>&1 标准错误输出重定向等同于 标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。【>代表重定向        &表示等同于】

分二步解析:第一步 1>/dev/null 的意思就是禁止标准输出,系统默认就是1标准输出,所以可以写为>/dev/null ;

第二步 2>&1 的意思就是把标准错误输出重定向到标准输出,由于禁止了标准输出,所以也就不会输出标准错误输出。

web43:【截断符,同上】

>/dev/null 2>&1将命令的输出丢弃,为了有输出,应当截断后面的

截断符:;(这里已经被过滤了)

     %0a(换行符的url)

     %26

      ||(url编码后是%7c%7c)

web44:【同上】

比上一题多过滤了flag可以用占位符绕过,与上一题几乎没有区别

web45:【同上】

比上一题多过滤了空格,空格可以用%09代替,与上一题没有区别

web46:【同上】

多过滤的三个好像并没有什么用*——?   ;用不到$符号 ;也用不着数字,与上一题相同

web47:【同上】

more:显示输出的内容,然后根据窗口的大小进行分页显示,然后还能提示文件的百分比;

less:less 工具也是对文件或其它输出进行分页显示的工具

tail:显示文件内容最后几行(即显示一个文件的内容的后多少行);tail   -n  行数值  文件名;

head:于显示文件的前几行内容,默认为前10行,可以通过-n参数指定行数。

sort:排序函数

%09是一个字符,属于编码,在带入服务器时会进行解码,所以并没有被过滤。好像根本用不着这些,与上一题一样

web48:【方法同上】

sed:通过指定的正则表达式完成指定关键字的过滤、截取、修改等操作[用法太多,不一一列举了]

awk:通过正则表达式得到需要的行列信息【打印、显示、匹配】

web49:【编码,同上】

比上一题多过滤了百分号,但因为%09和%0a是字符,属于编码,不会被过滤

web50:【空格绕过&占位符?不能用】

空格的url编码是%3c%3e      ||是%7c%7c

空格绕过方法:

cat${IFS}flag.php
cat$IFS/flag.php
cat$IFS$9flag.php
cat<flag.php
cat<>flag.php
cat%09flag.php

web51:【过滤查看命令】

相比上一题,过滤了tac查看命令,但是cat和nl命令都不行,把tac写为ta''c就可以成功绕过

web52:【假的flag】

IFS可以是White Space(空白键)、Tab( 表格键)、Enter( 回车键)中的一个或几个。

把通道符<  >过滤了,但没有过滤$符号,按常规思维得到了一个假的flag,查看根目录发现有flag,尝试把flag复制到当前目录,直接访问就能得到flag

web53:

web54:【重命名】

加了*星号就不能用单引号绕过了,用重命名就可以做出

web55:【无字母rce】

linux中的重要目录:

•主目录:/root、/home/username

•用户可执行文件:/bin、/usr/bin、/usr/local/bin

•系统可执行文件:/sbin、/usr/sbin、/usr/local/sbin

•配置:/etc

•临时文件:/tmp

•内核和Bootloader:/boot

•服务器数据:/var、/srv

•系统信息:/proc、/sys

•共享库:/lib、/usr/lib、/usr/local/lib

bin:主要放置一些系统必备执行档,如:cat、cp、ls、base64、more等等;常用的cat或者ls都是简写,例如ls完整全程应该是/bin/ls

用base64中的64进行通配符匹配,最终得到一串base64编码,解码后就可以获得flag

web56:【post文件待续】

#!是特殊的表示符,其后面跟的是此解释此脚本的shell的路径。

对PHP页面post文件时,发送的文件会在服务器本地的临时/tmp/下生成类似于/tmp/phpxxxxxx的文件,临时文件的命名规则为phpxxxxxX【php加五位小写字母再加一位大写字母】

注:ascii码中64是@,而65-90为大写字母,[的ascii值为91

理论上知道了当前工作目录的完整路径后,用nl/var/www/html/flag.php就能得到flag,但是前一秒抓到包后就提交参数就不正确了

ctfshow命令执行相关推荐

  1. CTFshow——命令执行

    CTFshow--命令执行 Web29 <?php error_reporting(0); if(isset($_GET['c'])){$c = $_GET['c'];if(!preg_matc ...

  2. CTFshow 命令执行 web72

    目录 源码 思路 题解 总结 源码 <?php/* # -*- coding: utf-8 -*- # @Author: Lazzaro # @Date: 2020-09-05 20:49:30 ...

  3. [CTFSHOW]命令执行

    文章目录 web 29 web 30 web 31 web32 web33-36 web37 web38 web40 web41 web42 web43 web44 web45 web46 web47 ...

  4. CTFshow命令执行29-123

    命令执行 WEB29 eval是php中执行以PHP脚本执行的命令 PHP命令可以执行脚本命令 本题使用方法是先 system(cp f*.php 1.txt) 然后访问1.txt WEB30 在PH ...

  5. ctfshow命令执行篇

    web31 echo(`ls%09/`); echo(`tac%09fla*`); web32 过滤; 关键命令执行函数也不能用 用文件包含 其实这个做法也是靠刷题经验猜flag路径 c=includ ...

  6. [CTFSHOW]命令执行55-74

    web 55 if(isset($_GET['c'])){$c=$_GET['c'];if(!preg_match("/\;|[a-z]|\`|\%|\x09|\x26|\>|\< ...

  7. ctfshow命令执行(持续更新,已更至web39)

    做命令执行题比前两种慢很多,到现在也只做了总数的五分之一,慢慢来吧. web29 web30 web31 web32 web33~36 web37 web38 web39 web29 题目如下: er ...

  8. ctfshow 命令执行 web29-web77 web118-122 web124 wp

    南神博客 文章目录 命令执行 web29 web30 web31 web32 web33 web34 web35 web36 web37 web38 web39 web40 web41 web42 w ...

  9. CTFshow 命令执行 web56

    目录 源码 思路 题解 总结 源码 <?php/* # -*- coding: utf-8 -*- # @Author: Lazzaro # @Date: 2020-09-05 20:49:30 ...

最新文章

  1. spyder怎么显示文件目录_MKV怎么转换为MP4?用它,快速转换!
  2. Spring Boot 注册 Servlet 的3种方式
  3. Java程序员如何在5年内从小白晋升为高手?
  4. ASP.NET Web API路由规则(二)
  5. MAC地址表配置与绑定
  6. Google API:如何访问Google Analytics(分析)数据?
  7. java 头尾 队列_Java数据结构之队列(动力节点Java学院整理)
  8. mysql 插入数据会执行事务吗_在代码中,插入数据到数据库时,如果不使用事务,将会导致速度极慢...
  9. ajax请求向服务器修改数据,用Jquery实现可编辑表格并用AJAX提交到服务器修改数据...
  10. 【系统结构】C++项目目录组织结构
  11. 如何通过Excel文件批量生成PDF417二维码
  12. 商务与经济统计学 第五章案例题
  13. 在R中进行偏相关分析
  14. 【LWIP】(补充)STM32H743(M7内核)CubeMX配置LWIP并ping通
  15. 【线代】线性方程组求解概念:齐次/非齐次方程的解?非零解、无穷多解、求解、求通解、方程有解时求全部解,是什么意思?
  16. [转载]如何用JDO开发数据库应用(3)
  17. 百度网盘加速无限试用_百度网盘临时加速正式上线,最低 2 元
  18. Caffeine使用指南
  19. Android 在应用图标上设置未读消息数量
  20. 网站广告1像素1元,超有创意的百万像素网站

热门文章

  1. 11月钓鱼网站简报:阿里巴巴占比居首 新网次之
  2. Vue--Router--路由模式--种类/区别/原理
  3. codeforces 448CPainting Fence
  4. 嵌入式linux开发04-roottfs移植
  5. TIA WinCC Unified入门经典
  6. 2020年超级计算机排名,2020中国高性能计算机TOP100榜单正式发布
  7. 用阻塞队列LinkedBlockingQueue实现生产者消费者先进先出
  8. 宗镜录略讲——南怀瑾老师——系列2
  9. Oracle最新技术网站
  10. IEC的PLC编程语言标准 IEC61131-3