加固题学习
学习一下加固题的做法
ezsqlssh连接之后 访问/var/www/html
tar打包下载源码
1tar -czvf /tmp/1.tar.gz ../html
查看源码
输入的参数没有经过任何的过滤 直接就输入到数据库中执行查找 存在sql注入
简单测试一下
写一个正则匹配看一下
123456if(preg_match("/select|and|\"|\'| |or|\+|=|like|databaese|\\|,|.|&|limit|%|group_concat|schema_name|schemata|extractvalue|~|updatexml|from|union|where|columns|--|show|/i",$password)){ die("用户名或密码错误"); } if(preg_match("/select|and|\"|\'| |or|\+|=|like|databaese|\ ...
java java题目复现 1
java题目复现 1
手头屯了不少之前的比赛题目,慢慢全部解决掉,一堆题目
StrangePort
做了一会 发现是N1CTF 2023 StrangePort
上来看看源码 存在问题的地方只有这里
感觉应该是gson反序列化一类的漏洞 之前没接触过
Gson 反序列化gson是谷歌开发的一个java库 提供了类似fastjson的 将字符串转换为对象,对象转换为字符串的功能
12345678910public class gson { public static void main(String[] args) throws ClassNotFoundException { String Json="eyJuYW1lIjoidXNlciIsImFnZSI6IjIwIn0="; String person="org.example.gson.person"; Gson gson = new Gson(); person test = (person)gso ...
NKCTF2024 用过就是熟悉&php_mvc学习
php_mvc学习前言打完nkctf 最后一题代码审计还是学长穿的 赛后复现的时候 实在没审计出来 学长说这个是简单的mvc框架
学了那么久不知道什么是php mvc 今天恶补一下
mvc 第一个想到的就是java web的mvc 两者应该有什么共同之处
所有的例子都是来源于nkctf这最后一道题目
MVCMVC模式(Model-View-Controller)是软件工程中的一种软件架构模式。 MVC把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。
路由处理url参数主要由PATHINFO模式控制入口
我们访问这个网站之后 参数会被放到这里来处理
mvc将全局的路由全部储存在根目录下
函数库文件框架自带functions.inc.php方法库,包含了很多数据模型创建的一些工具方法
在这里可以设置包含目录
通过__autoload方法 自动加载相关的类
框架要求相关的类命名规则如下
1首字母大小的类名.clsss.php
Controller自动加载的控制器需要保存在Controller里面 命名为.class.php 会被自 ...
cbctf bypass_java复现
cbctf bypass_java复现
手头屯了不少之前的比赛题目,慢慢全部解决掉,一堆题目
也不知道是什么比赛的题目了,就凑活着学
题目名字全部用jar包作为名字了,实在是懒的去找题目来源
bypass_java主要就是两个文件
/read路由直接将我们的相关内容直接base64解码一下然后直接执行了反序列化操作
存在一个简单的过滤
1234567891011121314151617181920212223242526272829303132333435//// Source code recreated from a .class file by IntelliJ IDEA// (powered by FernFlower decompiler)//package com.example.bypassjava;import java.io.IOException;import java.net.HttpURLConnection;import java.net.URL;import org.springframework.boot.SpringApplication ...
2024NKCTF
2024NKCTF_WP
在大家的一同努力之下获取了第四
欸,好爽
my first cms打开看到是个cms 网上搜了一圈 是CMSMS
一个php+mysql+smarty写的cms
dirsearch扫描一下,看到存在admin/login.php路由,直接简单访问
弱密码 admin/Admin123成功登录
出题人卡字典,良心大大滴坏
网上搜搜这个cms的漏洞
看到两个可能的
https://github.com/capture0x/CMSMadeSimple
和capture0x/CMSMadeSimple2: CMS Made Simple Version: 2.2.19 - SSTI (github.com)
注意到使用ssti注入的时候会遇到一个setting,绕不过去
前面那个可以
没有办法直接读取文件,尝试写马
antsword链接
全世界最简单的CTF访问/secret获取源码
1234567891011121314151617181920212223242526272829303132333435363 ...
2024venomvtf wp+学习
2024venomvtf wp+学习old.js源码如下
12345678910111213141516171819202122232425262728293031323334353637383940414243const express = require('express')const fs = require('fs')var bodyParser = require('body-parser');const app = express()app.use(bodyParser.urlencoded({ extended: true}));app.use(bodyParser.json());app.post('/plz', (req, res) => { venom = req.body.venom if (Object.keys(venom).length < 3 && venom.welcome == 159753) ...
JAVA二次反序列化学习
JAVA二次反序列化学习
学二次反序列化
SignedObject在SignedObject存在一个getobject方法
1234567891011public Object getObject() throws IOException, ClassNotFoundException { // creating a stream pipe-line, from b to a ByteArrayInputStream b = new ByteArrayInputStream(this.content); ObjectInput a = new ObjectInputStream(b); Object obj = a.readObject(); b.close(); a.close(); return obj; }
这里存在一个反序列化的操作,可以将恶意的反序列化内容存放在这个b里面触发二次反序列化
我们看看这个类的构造方法
1234567891011121314151617pub ...
Rome反序列化
Rome反序列化依赖1234567<dependencies> <dependency> <groupId>rome</groupId> <artifactId>rome</artifactId> <version>1.0</version> </dependency> </dependencies>
tostring问题出现在tostringbean#tostring方法这里
123456789101112131415161718192021222324252627282930313233343536373839404142434445public String toString() { Stack stack = (Stack) PREFIX_TL.get(); String[] tsInfo = (String[]) ((stack ...
fastjson反序列化_学习
fastjson反序列化
相关的漏洞实在是太多了,只能学习一部分,其余的就附加上了poc
背景Fastjson 是阿里巴巴的开源JSON解析库,它可以解析 JSON 格式的字符串,支持将 Java Bean 序列化为 JSON 字符串,也可以从 JSON 字符串反序列化到 JavaBean。
Fastjson是一个全程开源的项目,项目链接 https://github.com/alibaba/fastjson/
Fastjson提供了对json数据的高效处理
JSON 字符串转换为 Java 对象fastjson提供了JSON.parseObject()方法。可以将一个json字符串转化为java对象
我们可以看一下这个方法
然后会触发parse方法
然后会使用autoType实例化具体的类,调用相关的set/get方法访问相关的属性。
parse方法将json数据反序列化成java对象,并且在反序列化时调用了对象的setter方法。
不过这里的get/set方法存在一点要求
AutoTypeFastJson和jackson在把对象序列化成json字符串 ...
JNDI注入学习
JNDI注入学习JNDI JNDI的全称是Java Naming and Directory Interface,即Java命名和目录接口,作用是为JAVA应用程序提供命名和目录访问服务的API。通过管理者对api映射相特定的命名和目录系统。使得Java应用程序可以和这些命名服务和目录服务之间进行交互。
结构jndi主要包括五个结构
javax.nameing 包含用于访问命名服务的类和接口。定义了name和Context接口
javax.nameing.directory 扩展核心 javax.命名包,以提供除命名服务之外访问目录的功能。
javax.nameing.event 包含用于支持命名和目录服务中的事件通知的类和接口。
javax.nameing.ldap 包含用于支持 LDAPv3 扩展操作和控制的类和接口。
javax.nameing.spi 包含允许在 JNDI 下动态插入各种命名和目录服务提供程序的类和接口。
相关类InitialContext123456789101112131415161 ...