攻防世界-web题型-4星难度汇总-个人wp

news2024/9/23 11:23:46

Confusion1

进入页面查看源代码,发现有两个提示

访问第一个源码里面有个

/opt/flag_1de36dff62a3a54ecfbc6e1fd2ef0ad1.txt

/opt/salt_b420e8cfb8862548e68459ae1d37a1d5.txt

不过我发现好像是只要访问404页面都有这两个。。。

另外这两个admin和login页面都没用。。。

继续信息收集

但是发现一下扫出很多东西,然后访问去看。。。什么jiaoshi

不过扫描出来的有回显的两个不同的长度的数据,访问另一种长度的

都寄了,所有收集到的信息就只有上面两个什么很多字母的文件名了。。。不过我没怎么玩过加盐的这些东西,看不太懂。。。

看了源码还是不够细节,竟然是SSTI。。。

只不过尝试之后是python的SSTI注入的模版

进行尝试的时候发现过滤了挺多东西的

我因为已经看了wp了所以看到了做法,不过这个绕过的方式早就写在笔记里面了有道云笔记

用我自己之前写的脚本把这个file找出来索引

ez_curl

直接给出了代码但是这个代码好像是一个请求其他网站的代码,然后不是用的传统的POST请求用的是file_get_contents('php://input');

研究了挺久的时间练第一步都没有绕过去,我知道stripos函数有缺陷但是这里怎么使用的没搞出来

不过题目给了个附件可以看一看,一个app.js,看不懂。。。

看了wp说是考的

  • express的parameterLimit默认为1000
  • 根据rfc,header字段可以通过在每一行前面至少加一个SP或HT来扩展到多行

第一点:来自源代码的这一行。结合这篇文章的分析,当我们传入的参数超过1000个时,之后的参数会被舍弃掉。于是这里我们最开始发个"admin":"true"设置好admin的值,加上999个没用的参数,把程序拼接的&admin=false挤掉,即可绕过过滤。

第二点:header 字段可以通过在每一行前面至少加一个SP 或 HT 来扩展到多行。以此绕过对 headers 的过滤

原文链接:【愚公系列】2023年06月 攻防世界-Web(ez_curl)_ezcurl-CSDN博客

都不是很懂,哎啥也不懂只知道拿写好的脚本用。。。

越难的题越难以利用,基本都是些脚本来实现的。。。

ezbypass-cat

进入就是一个登录界面,然后抓包发现别密码被加密了不过好消息是密码只是简单的使用MD5加密,但是先习惯性的扫一下目录,好家伙,发现一个icon图标试spring的,并且发现一个目录

swagger信息泄露,属于api泄露信息,使用接口检测工具先跑了一遍好像没有成功的接口。。。我感觉考点不会是爆破

但是我也没有遇到过真实的泄露的情况我也不知道怎么利用

???看了wp。。。考点完全和这个泄露没有任何关系。。。考的是白名单,主要是我扫目录的时候没有扫出来flag.html字典不太行。。。

也不能这样说吧,其实这泄露应该还是有点东西的,因为我不管访问这些路径都会先跳到login页面,也是暗示了需要登录也就是使用白名单进行绕过。。。(只有login.html没有访问控制其他页面都存在访问控制,所以添加login.html就会是在允许访问的范围内在通过目录穿越去到其他的目录文件)

先抓个登录的包,然后目录穿越到flag.html页面

之前那些泄露的接口也是有信息的只是不绕过就无法访问的到

wife_wife

题目提示本题不需要爆破,但是进去看了就一个注册然后用注册的登录会有三个格子里面有数据

进去一个很大的二次元图片然后看源码给出了提示,说明是在username上面下功夫,不过这是个什么东西

然后准备扫目录的没想到这里竟然会直接回显,尝试SSTI发现把{{}}这节URL编码尝试先编码结果那边不识别。。。

根据上面的那个提示,这个好像是这个模版,但是我还没听说过ruby的模版注入

但是我又在页面上摸索了一会发现有个文件下载的地方,首先尝试看有没有任意文件下载。发现确实存在文件下载

看页面的js源代码就只做了前段的判断就可以下载,把这个地方修改为要下载的文件然后把后面那个什么hidden给删了就可以下载了(不能说是任意文件下载但是可以把当前目录下的源码文件下载)

不过就知道这个网站上面一个注册一个登录页面都是html文件,下载了没用,这里估计只是一个地方还要从其他地方搞出来。。。

到了这一步基本就不知道了,在网上找了几个模版注入的东西试了好像也没什么用。。。看wp了

做了半天是个什么node.js的参数污染。。。这种题说实话我也没听说过有把注册的账号和密码放进js保存起来的。。。。。。我这里不做过多的解释,我自己也不是很懂node.js的一些知识,反正是这样利用的。。。我认为只是那个文件应该要通过这个文件下载下载下来才有意思否则这是谁也猜不到考的是什么。。。

今天有看了看这个Nodejs原型链污染攻击基础知识 | Savant's Blog

讲的很清楚,

  • prototype是newClass类的一个属性
  • newClass类实例化的对象newObj不能访问prototype,但可以通过.__proto__来访问newClass类的prototype
  • newClass实例化的对象newObj的.__proto__指向newClass类的prototype

所以可以直接通过.__proto__去修改里面的属性的值,并且一个修改了在同源代码中其他类里面都会出现这个属性

题目名称-文件包含

给出了很明显的文件包含的提示,但是上面包含了一个check文件估计过滤了相当多的东西

测试几下发现base64被过滤,read被过滤,顺便扫了下源码发现了flag.php

尝试了大部分简单的绕过方式,然后还使用了一个比较小众的编码绕过方式,就是过滤器,这个我之前做过这样的题。

php://filter/convert.iconv.编码.编码/resource=flag.php

详细可以参考这篇文章PHP伪协议filter详解,php://filter协议过滤器-CSDN博客

我直接把这些编码方式放到一个字典里,然后去跑用集束炸弹模式

放bp随便一下就跑出来了

FlatScience

在页面上把所有连接点了没有看到注入点,先信息收集一下

发现了admin和login的页面

然后到处点,尝试弱口令无果最后发现login的usr存在SQL注入,用sqlmap好像有点什么问题无法把数据跑全。。。我都没遇到过sqlite数据库的注入,去网上找好像没有报错注入。。。用盲注sqlmap跑的都有点问题

虽然没有回显位但是抓包那里发现了回复的数据包的cookie有显示。。。

CREATE TABLE Users(id int primary key,name varchar(255),password varchar(255),hint varchar(255))

查询hint字段回复个

my fav word in my fav paper?!,my love is�,the password is password;

他的意思就是这个密码是那个页面文献中的一个单词。。。然后这个单词加密后和取出来的数据比对一致就是是密码。。。我是不想搞了直接用网上的脚本跑把。。。

首先用个代码把所有的PDF文件爬取下来

import re

import requests

regular_pdf = '[a-fA-F0-9]{32,32}.pdf'
regular_url = '\d/'
root_url = 'http://111.200.241.244:57162/'
pdf_list = []


def get_url(url):
    result = requests.get(url + "index.html")
    if result.status_code == 404:
        return
    re_url = re.findall(regular_url, result.text)
    print(re_url)
    re_pdf = re.findall(regular_pdf, result.text)
    for pdf in re_pdf:
        pdf_list.append(url + pdf)
    if re_url:
        for suffix_url in re_url:
            get_url(url + suffix_url)
    else:
        return


def download_pdf(pdf_list):
    for pdf_url in pdf_list:
        result = requests.get(pdf_url)
        file = open(r'/Users/yingjun/PycharmProjects/Test/pdf/' + pdf_url[-36:], 'wb')
        file.write(result.content)
    pass


get_url(root_url)
print(pdf_list)
download_pdf(pdf_list)

然后把每个PDF的单词爬下来加密后比对

import hashlib
import pdfplumber
import os

crypto_password = '3fab54a50e770d830c0416df817567662a9dc85c'
words_list = []
pdf_path = []

root_path = '/Users/yingjun/PycharmProjects/Test/pdf/'


def crypto_str(word):
    word = word + 'Salz!'
    # print(word)
    encrypts = hashlib.sha1(word.encode("utf-8")).hexdigest()
    return encrypts


def get_content(path):
    pdf = pdfplumber.open(path)
    for page in pdf.pages:
        content = page.extract_text()
        words_list.extend(content.split(' '))


def get_pdf_name(path):
    filelist = os.listdir(path)
    for item in filelist:
        pdf_path.append(item)


get_pdf_name(root_path)
    for path in pdf_path:
        get_content(root_path + path)

for word in words_list:
    word = word.replace('\n', '')
    encrypts = crypto_str(word)
    if encrypts == crypto_password:
        print("-------------------------找到了------------------------------------")
        print(word)

反正最后找到就是这个ThinJerboa

然后用这个登录就可以了

这两道题都是这种水平的题。。。4星确实有点难度那怪叫web进阶

Cat

先按照提示搞个域名输入发现没反应,直接试127.0.0.1,好家伙经典题型

尝试一些方式发现不可以让他执行系统命令,先信息收集一下

而且这里回显只回显了一部分东西

不过我在使用%a0的时候把什么html的页面返回了。

用html打开

不知道和这题有没有关系,不过这不是php的页面吗,怎么和python扯上关系了,看这个好像是调用了python中的ping接口去用的,而且有个django。。。

又找了半天没有发现在哪里进一步。。。

我确实叼到这之前基本上都走对了,没想到是要找个什么setting文件。。。闻所未闻

这篇wp写的还可以并且还有一个fuzz的字典,可以拿着用【网络安全 | XCTF】Python之Django模块+curl 攻防世界 Cat 解题详析_django curl-CSDN博客

这是python的Django模块,其数据库database文件存在于opt/api下的setting.py文件中

首先查看数据库的路径

@/opt/api/api/settings.py

在源码中找到这个东西

然后查找这个数据库内容,flag就在这个里面,这确实找不到。。。

@/opt/api/database.sqlite3

这题主要是考察了curl和django的模块内容

在PHP中使用CURL进行文件上传时(只有在php中有这个问题),@符号加上文件路径表示读取该文件内容并将其作为请求参数上传

当使用文件路径作为参数时,若文件路径指定有误或不存在,则无法正确读取文件内容。

使用@+文件路径时,CURL将自动读取该文件内容并将其作为请求参数。即使输入的文件路径有错或不存在,CURL仍然可以正常上传。

至此四星题全部做完,确实还是有点难度的。

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

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

相关文章

如何把照片转换成PDF格式?分享3种好用的PDF转换方法

在数字化的时代中,各种格式的文件已经是我们平时办公中不可或缺的一部分,其中尤其是以图片、PDF这两种文件使用的最多,图片能够更加直观的表现内容,而PDF文档因其稳定性、兼容性等特性,也在办公中有独特的优势&#xf…

Pandas DataFrame的创建方法(Create DataFrame)

pandas是一个第三方数据分析库,其集成了大量的数据模型和分析工具,可以方便的处理和分析各类数据。其中主要对象类型有Series,DataFrame和Index。本文介绍DataFrame对象的基本创建方法。 关于DataFrame的基础用法,可以查看下面的…

随机生成n个字节os.urandom(n)

【小白从小学Python、C、Java】 【考研初试复试毕业设计】 【Python基础AI数据分析】 随机生成n个字节 os.urandom(n) [太阳]选择题 下列输出结果中正确的是? import os print("【执行】a os.urandom(2)") a os.urandom(2) print("【显示】a ", a) pri…

【Qt】输入类控件QDail

目录 输入类控件QDail 例子:调整窗口不透明度 输入类控件QDail 使用QDail表示一个旋钮,通过鼠标拖动旋钮可以完成一些相关的属性。 核心属性 属性说明 value 持有的数值. minimum 最⼩值 maximum 最⼤值 singleStep 按下⽅向键的时候改变的步⻓…

【Java数据结构】---二叉树OJ

乐观学习,乐观生活,才能不断前进啊!!! 我的主页:optimistic_chen 我的专栏:c语言 ,Java 欢迎大家访问~ 创作不易,大佬们点赞鼓励下吧~ 文章目录 相同的树另一颗树的子树翻…

与copilot 结对编程系列 - log日志重复性检测 - 第4篇 - 网页UI界面

背景 细节可以参考这篇文章: 与copilot 结对编程系列 - log日志重复性检测 - 第1篇 - 总体介绍及效果展示 本文主要将数据库中存储的数据通过网页调用并展示出来, 以下是对详细解释。 web框架选择 当前场景使用 Flask 来展示网页信息. 主要原因如下: 轻量级和易…

如何使用JavaScript获取HTML表单中的值?

在开发中,我们经常需要获取用户在表单中输入的数据,然后进行处理或提交到服务器。今天我们就来聊一聊,如何用JavaScript获取HTML表单中的值。 使用 FormData 构造函数 FormData 是一个非常方便的工具,它可以把表单中的所有数据打包…

C++,std::chrono 详解

文章目录 1. 概述2. 时间点(Time Points)3. 时间间隔(Durations)4. 时钟(Clocks)5. 时间算术6. 时间转换7. 延时参考 1. 概述 std::chrono 是 C11 引入的一个库,用于处理日期和时间。它提供了一…

Unsloth 教程 - 如何微调 Llama-3并导出到 Ollama

本文翻译整理自:🦙 How to Finetune Llama-3 and Export to Ollama https://docs.unsloth.ai/tutorials/how-to-finetune-llama-3-and-export-to-ollama 文章目录 1、什么是Unsloth?2、什么是Ollama?3、安装Unsloth4、选择要微调的…

博弈论总结

公平组合游戏(Impartial Game)的定义如下: 游戏有两个人参与,二者轮流做出决策,双方均知道游戏的完整信息; 任意一个游戏者在某一确定状态可以作出的决策集合只与当前的状态有关,而与游戏者无关…

pytorch深度学习基础 6(简单的参数估计学习3)

上一篇博客说了如何拟合一条直线ywxb,今天我们现在使用PyTorch进行相同的曲线拟合 拟合y x*x -2x 3 0.1(-1到1的随机值) 曲线 给定x范围(0,3) 生成数据 import numpy as np import matplotlib.pyplot as plt import torch as t…

小程序学习day13-API Promise化、全局数据共享(状态管理)、分包

44、API Promise化 (1)基于回调函数的一部API的缺点:小程序官方提供的异步API都是基于回调函数实现的,容易造成回调地狱的问题,代码可读性、可维护性差 (2)API Promise化概念: 指…

Qt 环境搭建

sudo apt-get upadte sudo apt-get install qt4-dev-tools sudo apt-get install qtcreator sudo apt-get install qt4-doc sudo apt-get install qt4-qtconfig sudo apt-get install qt-demos编译指令 qmake -projectqmakemake实现Ubuntu20,04 与Windows之间的复制粘贴 安装o…

在C#中如何监控其它应用全屏

原文链接:https://www.cnblogs.com/zhaotianff/p/18338275 在C#中判断其它应用全屏可以有多种方案。我这里提供两种思路 使用定时器 在定时器中定时判断当前窗口的状态是否是最大化或者宽高是否等于桌面窗口的宽高。 这种方法我没有去尝试,凭个人经验…

复杂的编辑表格

需求描述 表格可以整体编辑;也可以单行弹框编辑;且整体编辑的时候,依然可以单行编辑 编辑只能给某一列(这里是参数运行值)修改,且根据数据内容的参数范围来判断展示不同的形式:input/数字输入/单…

小波卷积:为计算机视觉任务开辟新的参数效率之路

论文复述 这篇论文介绍了一种创新的卷积神经网络层——WTConv,它通过小波变换技术显著扩展了CNN的感受野,同时保持了参数效率。WTConv层能够实现对输入数据的多频率响应,增强了模型对形状而非纹理的特征识别能力,提高了在图像分类…

黑神话悟空不只是玩游戏 有人用它3天赚了85W

这几天你是不是在想办法升级电脑配置,买PS5玩黑神话悟空游戏,每一个男人看到那么好的游戏画面,都控制不住想玩,今天分享给大家一些资料,让你快速玩游戏的同时,还能挣点外快,黑神话悟空不只是玩游…

MATLAB 计算两点沿某个方向的间距(81)

MATLAB 计算两点沿某个方向的间距(81) 一、算法介绍二、算法实现1.代码2.效果一、算法介绍 上一章介绍了如何计算点到空间直线的距离,这里进一步的,我们也可以计算两个点,沿着某个方向的距离,这在很多处理中都会使用到,实际上就是将两点投影到该方向的直线,再计算间距…

线性表复习之初始化顺序表操作

线性表的顺序表示-初始化顺序表 代码 #include <stdio.h> #define MaxSize 10 // 定义最大长度typedef struct{int data[MaxSize]; // 申请空间&#xff08;静态&#xff09;int length; // 当前长度 }SqList;void InitList(SqList &L){for (int i 0; i < MaxS…

java-队列--黑马

队列 别看这个&#xff0c;没用&#xff0c;还是多刷力扣队列题 定义 队列是以顺序的方式维护一组数据的集合&#xff0c;在一端添加数据&#xff0c;从另一端移除数据。一般来讲&#xff0c;添加的一端称之尾&#xff0c;而移除一端称为头 。 队列接口定义 // 队列的接口定…