ctfshow命令执行
目录
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命令执行相关推荐
- CTFshow——命令执行
CTFshow--命令执行 Web29 <?php error_reporting(0); if(isset($_GET['c'])){$c = $_GET['c'];if(!preg_matc ...
- CTFshow 命令执行 web72
目录 源码 思路 题解 总结 源码 <?php/* # -*- coding: utf-8 -*- # @Author: Lazzaro # @Date: 2020-09-05 20:49:30 ...
- [CTFSHOW]命令执行
文章目录 web 29 web 30 web 31 web32 web33-36 web37 web38 web40 web41 web42 web43 web44 web45 web46 web47 ...
- CTFshow命令执行29-123
命令执行 WEB29 eval是php中执行以PHP脚本执行的命令 PHP命令可以执行脚本命令 本题使用方法是先 system(cp f*.php 1.txt) 然后访问1.txt WEB30 在PH ...
- ctfshow命令执行篇
web31 echo(`ls%09/`); echo(`tac%09fla*`); web32 过滤; 关键命令执行函数也不能用 用文件包含 其实这个做法也是靠刷题经验猜flag路径 c=includ ...
- [CTFSHOW]命令执行55-74
web 55 if(isset($_GET['c'])){$c=$_GET['c'];if(!preg_match("/\;|[a-z]|\`|\%|\x09|\x26|\>|\< ...
- ctfshow命令执行(持续更新,已更至web39)
做命令执行题比前两种慢很多,到现在也只做了总数的五分之一,慢慢来吧. web29 web30 web31 web32 web33~36 web37 web38 web39 web29 题目如下: er ...
- ctfshow 命令执行 web29-web77 web118-122 web124 wp
南神博客 文章目录 命令执行 web29 web30 web31 web32 web33 web34 web35 web36 web37 web38 web39 web40 web41 web42 w ...
- CTFshow 命令执行 web56
目录 源码 思路 题解 总结 源码 <?php/* # -*- coding: utf-8 -*- # @Author: Lazzaro # @Date: 2020-09-05 20:49:30 ...
最新文章
- spyder怎么显示文件目录_MKV怎么转换为MP4?用它,快速转换!
- Spring Boot 注册 Servlet 的3种方式
- Java程序员如何在5年内从小白晋升为高手?
- ASP.NET Web API路由规则(二)
- MAC地址表配置与绑定
- Google API:如何访问Google Analytics(分析)数据?
- java 头尾 队列_Java数据结构之队列(动力节点Java学院整理)
- mysql 插入数据会执行事务吗_在代码中,插入数据到数据库时,如果不使用事务,将会导致速度极慢...
- ajax请求向服务器修改数据,用Jquery实现可编辑表格并用AJAX提交到服务器修改数据...
- 【系统结构】C++项目目录组织结构
- 如何通过Excel文件批量生成PDF417二维码
- 商务与经济统计学 第五章案例题
- 在R中进行偏相关分析
- 【LWIP】(补充)STM32H743(M7内核)CubeMX配置LWIP并ping通
- 【线代】线性方程组求解概念:齐次/非齐次方程的解?非零解、无穷多解、求解、求通解、方程有解时求全部解,是什么意思?
- [转载]如何用JDO开发数据库应用(3)
- 百度网盘加速无限试用_百度网盘临时加速正式上线,最低 2 元
- Caffeine使用指南
- Android 在应用图标上设置未读消息数量
- 网站广告1像素1元,超有创意的百万像素网站