DOM型XSS学习
DOM型XSS学习Ps:之前一直没好好学过 xss,特别是 dom 型 xss 快忘得差不多了,所以今天抽空简单补补,也不是学得很深入。
DOM 型 XSS 是什么DOM型XSS是基于DOM文档对象模型的一种漏洞,DOM 型 XSS 并不会和后台进行交互。由客户端的脚本程序通过DOM动态地检查和修改页面内容,从客户端获得DOM中的数据(如从URL中获取数据)并在本地进行执行。
常见的危险危险函数如:
document.URL,document.write,location,window.location。
如下面的HTML文件就存在DOM型XSS,其功能是当我们在URL栏输入参数name的值后,就会在当前页面显示输入如的name的值,其功能的实现全都在前端JS中进行、未与后台进行任何交互:
<!DOCTYPE html> <html> <head> <title>DOM XSS</title> </head> <body> <script> var pos=document ...
XSS靶场训练
XSS靶场level-1发现有个name传参,看源代码 get 传参 name 的值 test 插入了 html 里头
![](https://raw.githubusercontent.com/gaorenyusi/img/master/img/屏幕截图 2024-01-10 114617.png)
然后应用 alter 函数就能触发第二关。
那么传入
<script>alert()</script>
level-2传入参数值
<script>alert()</script>
查看源代码
<>符号被转义,但是下面一句是正常的,传入的 “>和<”与前后形成闭合。从而被当作标签处理,所以传入
"><script>alert()</script><"
level-3
查看源码发现上下都被转义了,
有 input 标签,那么就 onfocus 事件绕过,所以传入
' onfocus=javascript:alert() '
单引号和 ...
记一次 edu 证书站失败的逻辑漏洞
记一次 edu 证书站失败的逻辑漏洞闲来无事,在礼物中心看到个证书站,看名称感觉应该挺好挖的,简单信息搜集一波,在 hunter 上查看子域名,发现有个管理系统
访问该链接,是个登录框
现在需要去搞一手学号什么的了(因为是随便看看的所以没有先信息搜集),利用 hack 语法找了半天只找到 16,17 级的学生学号,尝试利用显示账号错误,看来还是需要找近几年的了,
又去 dy,xhs 等社交平台上找了半天发现没有竟然没找到,最后直接通过 16,17 的学号重新构造爆破的 24 级学号,尝试弱密码登录发现没戏,直接试试抓包改回包
把回包的 402 改为 200
提示
说明应该是成功登录进去了,但是还是需要对用户进行鉴权才会显示功能点,那么既然登录存在逻辑漏洞,是否修改密码也存在相同的漏洞,
同理抓包修改
发现直接来到了设置新密码,说明逻辑漏洞绕过成功了,
最后修改密码成功,
再次进行登录,发现还是提示账号或密码有误,
猜测该逻辑漏洞可能只是前端逻辑漏洞,通过修改的响应值只能决定前端的显示。数据并没有写入后端。
flask内存马
flask内存马基础原理1.1Webshell的技术历程web服务器管理页面——> 大马——>小马拉大马——>一句话木马——>加密一句话木马——>加密内存马
1.2什么是内存马内存马是一种无文件Webshell,简单来说就是服务器上不会存在需要链接的webshell脚本文件。内存马的原理就是在web组件或者应用程序中,注册一层访问路由,访问者通过这层路由,来执行我们控制器中的代码,一句话就能概括,那就是对访问路径映射及相关处理代码的动态注册。
demo测试源码:
from flask import Flask, request, render_template_stringapp = Flask(__name__)@app.route('/')def hello_world(): # put application's code here person = 'knave' if request.args.get('name'): person = reques ...
CC1补充-LazyMap利用
分析了上一条链子,其实在TransformMap类那里有个分叉点,就是还可以利用另一个类LazyMap进行transform方法的调用。
进入到LazyMap类中,发现get方法也调用了transform方法:
可以看到在调用方法之前有个if的判断,跟进这个containKey函数:
翻译一手:
也就是传入的key值是map键值对中没有的就会返回false了,这个很容易就能实现。
然后看看怎么控制参数factory,发现构造方法可以对factory进行赋值,虽然有两个构造方法但其参数类型不同先不管。
这里又是保护属性,需要找一找看有没有其他地方对其进行了调用。发现和TransformMap一样都有个静态方法decorate能够实现构造方法的调用。
测试一下:
import org.apache.commons.collections.functors.InvokerTransformer;import org.apache.commons.collections.map.LazyMap;import java.util.HashMap;import java.util.Map ...
java动态代理
代理模式是什么一、概念
在有些情况下,一个客户不能或者不想直接访问另一个对象,这时需要找一个中介帮忙完成某项任务,这个中介就是代理对象。
例如:购买火车票不一定要去火车站买,可以通过 12306 网站或者去火车票代售点买。又如找女朋友、找保姆、找工作等都可以通过找中介完成。平时的交作业也是通过中介(课代表)来完成的。
二、定义
由于某些原因需要给某对象提供一个代理以控制对该对象的访问。
访问对象不适合或者不能直接引用目标对象,代理对象就可以作为访问对象和目标对象之间的中介。
三、代理模式中涉及的主要成员
抽象角色:通过接口或抽象类声明真实主题和代理对象实现的业务方法。
真实角色:实现了抽象主题中的具体业务,是代理对象所代表的真实对象,是最终要引用的对象。
代理:提供了与真实主题相同的接口,其内部含有对真实主题的引用,它可以访问、控制或扩展真实主题的功能。
客户 : 将要使用代理角色来进行一些操作 。
四、优点(都是些客套话)
代理模式在客户端与目标对象之间起到一个中介作用和保护目标对象的作用
代理对象可以扩展目标对象的功能
代理模式能将客户端与目标对象分离,在一定程度上降低了系统 ...
CC1链的分析与利用
Commons Collections简介Apache Commons Collections 是一个扩展了Java 标准库里的Collection 结构的第三方基础库,它提供了很多强有力的数据结构类型并实现了各种集合工具类。 作为Apache 开源项目的重要组件,被广泛运用于各种Java 应用的开发。
环境配置jdk版本:jdk8u71以下,因为在该jdk版本以上这个漏洞已经被修复了
下载链接:https://www.oracle.com/cn/java/technologies/javase/javase8-archive-downloads.html
一、依赖配置
先创建一个新的maven项目:
然后在文件pom.xml的中添加(这里是分析Commons Collections3.2.1版本下的一条反序列化漏洞链):
<dependencies> <dependency> <groupId>commons-collections</groupId> <artifactId>common ...
python栈帧沙箱逃逸
一、生成器生成器(Generator)是 Python 中一种特殊的迭代器,它可以通过简单的函数和表达式来创建。生成器的主要特点是能够逐个产生值,并且在每次生成值后保留当前的状态,以便下次调用时可以继续生成值。这使得生成器非常适合处理大型数据集或需要延迟计算的情况。
在 Python 中,生成器可以通过两种方式创建:
1、生成器函数:定义一个函数,使用 yield 关键字生成值,每次调用生成器函数时,生成器会暂停并返回一个值,下次调用时会从暂停的地方继续执行。(符合上面的每次生成值后保留当前的状态,以便下次调用时可以继续生成值)。
示例:
def my_generator(): yield 1 yield 2 yield 3gen = my_generator()print(next(gen)) # 第一次调用,输出 1print(next(gen)) # 第二次调用,输出 2print(next(gen)) # 第三次调用,输出 3
2、生成器表达式:使用类似列表推导式的语法,但使用圆括号而不是方括号,可以用来创建生成器对象。生成器表达式会逐个生成值,而不是一次性 ...
URLDNS链分析
配置调试ysoserial下载项目ysoserial:https://github.com/frohoff/ysoserial
idea打开,在pom.xml下载好需要用的所有依赖。下载依赖的时候一定要把配置文件全勾上:
下载完成,看到没有报错后,就可以开始调试ysoserial了。
再pom.xml中找到入口类:
跟踪入口类,右键点击调试发现只会打印uage信息:
这是因为我们没有传入参数,需要进行调试配置:
然后再次点击调试,发现序列化成功(呃,上面的地址需要加个http://头):
然后就可以通过打断点对ysoserial的URLDNS链进行调试了。
URLDNS链分析URLDNS 是ysoserial中利用链的一个名字,通常用于检测是否存在Java反序列化漏洞。该利用链具有如下特点:
不限制jdk版本,使用Java内置类,对第三方依赖没有要求
目标无回显,可以通过DNS请求来验证是否存在反序列化漏洞
URLDNS利用链,只能发起DNS请求,并不能进行其他利用
学了前面的java序列化,我们知道了要想利用反序列化漏洞就得要重写readObjec ...
java反序列化
序列化反序列化基础在Java语言中,实现序列化与反序列化的类:
位置: Java.io.ObjectOutputStream java.io.ObjectInputStream
序列化: ObjectOutputStream类 –> writeObject()注:该方法对参数指定的obj对象进行序列化,把字节序列写到一个目标输出流中,按Java的标准约定是给文件一个.ser扩展名
反序列化: ObjectInputStream类 –> readObject()注:该方法从一个源输入流中读取字节序列,再把它们反序列化为一个对象,并将其返回。
java在序列化一个对象时,会调用writeObject方法,参数类型时ObjectOutputStream,开发者可以将任何内容写入这个Stream中;反序列化时会调用readObject,可以从中读取到前面写入的内容,并进行处理。
demo:
import java.io.*;import java.util.Arrays;public class Main implements Serializable { p ...