RCE
RCE题目绕过1空格绕过: ${IFS} %09
[Dest0g3 520迎新赛]SimpleRCE题目源码
1234567<?phphighlight_file(__FILE__);$aaa=$_POST['aaa'];$black_list=array('^','.','`','>','<','=','"','preg','&','|','%0','popen','char','decode','html','md5','{','}','post','get','fil ...
XXE 2024-7-10
什么是XXE?XXE 全称XML外部实体注入(XML External Entity Injection)攻击。是由于程序在解析XML时加载了攻击者伪造的外部实体引发的安全问题。
什么是XML?XML指的是可扩展标记语言(eXtensible Markup Language)类似于html。不过HTML则用来显示数据,而XML被设计用来传输和存储数据,是一种文本格式。
XML的特点
XML的标签没有被定义,需要使用者自己自定义标签和文档结构
XML仅仅是纯文本,不会做任何事情。仅仅是用来存储数据
XML文本格式
XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素。
DTD
DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用。
为什么要使用DTD?
通过DTD每一个XML文档都可以拥有一个有关对自身格式的描述。
可以通过DTD来规定一个XML文档的标准格式,某些需要直接交换数据的XML文档通过使用这个DTD来确保格式相同,避免数据解析错误。
应用程序在接收到XML文档时,可以使用DTD进行验证,若符合DTD的定义,则表示应用程序可以安全的处理这些数据。 ...
Golang基础
Golang数据类型整型Go语言同时提供有符号和无符号的整数类型
有符号整型:int、int8、int64、int32、
无符号整型:uint、uint8、uint64、uint32、uint64、uintptr
int8、int16、int32 和 int64 四种大小截然不同的有符号整数类型,分别对应 8、16、32、64 bit(二进制位)大小的有符号整数,与此对应的是 uint8、uint16、uint32 和 uint64 四种无符号整数类型。
int 和 uint,它们分别对应特定 CPU 平台的字长(机器字大小),其中 int 表示有符号整数,应用最为广泛
Go语言中int类型变量的声明
1var 变量名 int;
浮点型Go语言支持两种浮点型数:
float32 : 范围约1.4 * 10[^-45 ] 到 3.4 * 10[^38]
float64 : 范围约4.9 * 10[^-324]到1.8 * 10[^308]
Go语言中float32 / float64变量的声明
12var 变量名 float32;var 变量名 float ...
SQL手法 - 异或注入
异或注入mySQL在做String类型与数字类型的比较时, 如果字符串前面是数字,转换时就是转换成前面的数字,然后再进行比较. 比如: '1aaa' ==> 1如果字符串前面不是数字, 转换时就将其变成0进行比较.比如: 'aaa' ==>0
结果是1, 表示true
结果是0, 表示false
如何进行异或?异或操作(^)是一种逻辑运算符,用于比较两个二进制位。在异或操作中,如果两个二进制位相同,则结果为0;如果两个二进制位不同,则结果为1。
123456789计算1 ^ 21 的二进制表示是 0001,2 的二进制表示是 0010。 0001 (1) 0010 (2) ------- 0011 (3)所以 1 ^ 2 = 3
什么是异或注入?异或注入说简单一点就是在构造where后面的判断条件时使用 ^(异或符号)来达到sql注入攻击的目的
一、 正常的查询语句及效果
二、拼接异或条件的查询语句
1.
2.
为什么会有这个结果呢?
对于图1
首先: 'Keli'会与0做异或运算,结果为0 ...
两个src案例
案例一**文前废话:**某天正在刷着**社区的帖子,欣赏着漂亮的小姐姐,突然间评论区的一条评论引起了我的注意,类似于下面这样
这种评论在html标签中代码格式是<a>这是文字</a>这样的同时评论区XSS漏洞的高发区,想着可能会有操作点
一、发布一个标题有js语句的贴子
二、复制这个帖子的分享连接到另一个帖子的评论区评论然后刷新,发现有弹窗
三、查看网页源码,js语句已经写入
修复建议
对帖子的主题进行严格的验证或过滤
将引用的数据进行编码处理
案例二废话:早就看那共享电车不爽了,10分钟收我1块!
一、配置好环境,对小程序进行抓包本来想测测支付漏洞的,测了半天没有任何结果。突然间发现旁边有一个上传头像的功能
这不就来了吗
二、抓包上传一个我也不认识的文件
嗯!?!上传成功了!文件名也没改
问: 为什么我这有做?
因为这样可以排查出是不是用的白名单
三、上传一个php文件
又上传成功了!
访问页面
啥也没有?
不对劲,10分得有15分不对劲!
四、上传一个图片马,后缀改成php
好好好!解析了,但是不知道为什么不显示php代码输出的内容!
...
浅学XXE
什么是XXE?XXE就是XML外部实体注入。当允许引用外部实体时,通过构造恶意内容,就可能导致任意文件读取、系统命令执行、内网端口探测、攻击内网网站等危害。
什么是XML?XML用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素。
XML有什么特点
XML仅仅是纯文本,他不会做任何事情。
XML可以自己发明标签(允许定义自己的标签和文档结构)
XML 无所不在。XML 是各种应用程序之间进行数据传输的最常用的工具,并且在信息存储和描述领域变得越来越流行。
既然XML是纯文本为什么还会产生注入呢原本xml本身是没有任何作用,但是在PHP里有一个函数叫做simplexml_load_string,他的作用是把xml转化为对象。
PHP 中的simplexml_load_file()函数 ,用于加载 XML 文件并返回一个 SimpleXMLElement 对象,这样你就可以轻松地操作 XML 数据了。
XML与HTML的区别
XML被设计用来传输和存储 ...
某大学的存储型XSS
一、信息收集从来就没有弱口令成功登陆过网站,就想着找找看有没有暴露初始密码的学校网站谷歌语法搜索site:*.sdu.edu.cn intext:默认密码找到一个暴露默认密码的学校网站
进入该学校的教材征订系统,需要用学号登录
然后在百度贴吧等社交平台收集学生学号信息,这里找到了一个15年的帖子暴露了许多学号的帖子
二、测试随机找一个幸运儿的学号进行登录
登录成功之后,对头像上传功能进行测试
上传图片马bp改成php文件,竟然显示上传成功了,当我以为能getshell时,发现被后台删了
用bp抓包时看到一个包里有文件保存路径,就突然间想到了zbs师傅打到的黑龙江某学校的XSS漏洞就对bp里面的路径改了一下
刷新页面有弹窗
再看前端代码
就这样人生中的第一个漏洞到手
三、修复建议
对图片路径得传参进行实体化编码
多设置一些逻辑判定
正则表达式
正则表达式什么正则表达式?正则表达式又称规则表达式,在代码中常简写为regex、regexp或RE,正则表达式通常被用来检索、替换那些符合某个模式的文本。
正则表达式的用途
判断字符串是否符合某一规则(比如判断是否符合手机号、邮箱规则等等)
从一个字符串中找出符合规则的所有子字符串(比如取HTML标签名等等)
php中正则表达式常用相关函数是什么?
Preg_match_all(正则表达式、匹配字符串、匹配到的东西放入数组)该函数会返回匹配到的次数(可能是0),或者如果发生错误返回FALSE
preg_replace(正则表达式、替换成什么、匹配字符串)说该函数会返回替换后的结果
正则表达式的语法——字符(一)
数字:\d
非数字:\D
空白字符(空格、制表符、换页符等):\s
非空白字符:\S
单词字符(26个英文字母+数字+下划线):\w
非单词字符:\W
正则表达式的语法——字符(二)字符集合:[单个字符或字符区间],用于匹配集合内字符
比如
[a-z]表示a-z这26个小写字母
[0-9a-z]表示0-9这10个数字和a-z这26个小写字母
[123a-h]表示包含数字 ...
SSIT模板注入
ssti模板注入攻击SSIT模板注入攻击中文名称服务端模板注入漏洞,也直接称为模板注入。当用户输入数据以不安全的方式嵌入到模板中时,就会发生模板注入。
什么是模板引擎?模板引擎(这里特指用于Web开发的模板引擎)是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的文档。
检测模板的方法
可利用类(不全)1234567大多数利用的是os._wrap_close这个类__builtins__,它里面有eval()它的payload是 ==>{{url_for.__globals__['__builtins__']['eval']("__import__('os').popen('ls').read()")}}{{"".__class__.__base__.__subclasses__()[132].__init__.__globals__[' ...
php反序列化
序列化直接将对象数据转化成字符串或者二进制内容。然后进行存储
反序列化将序列化之后的数据,重新转变为对象
对象在程序中运行时,他是内存中的一项数据。当程序运行结束之后,对象就会被回收,回收完,对象就没有了。
通过序列化将对象的状态,转变成一个具体的数据,保存到你的硬盘上
序列化过程,只保存了对象的数据。而对应的方法是没有保存的。
反序化漏洞当PHP应用程序接收到未经验证的用户输入,并将其传递给unserialize()函数时,就可能存在反序列化漏洞。攻击者可以通过精心构造的序列化数据来触发漏洞,从而在应用程序中执行任意代码或导致不良行为。
**简单来所就是:**通过控制 序列化之后的结果的值,实现控制程序运行时对象的变量的数据。从而实现攻击
攻击步骤
找到存在反序列化的传参点
找到存在高危操作的类 。将高危操作的类中的变量进行覆盖,从而实现危险函数的调用
魔术函数1234567891011121314151617181920212223242526__construct() 对象创建时被调用__destruct() 对象被销毁时调用__toString() 方法用于一个 ...