前言想要了解明白这个漏洞,我们就需要知道一些前提
同源策略 (Same Origin Policy)
同源策略的基本原则是:当一个浏览器加载一个源(Origin)的文档或脚本时,它将只允许该文档或脚本与其自身相同源的资源进行交互,而不允许与其他源的资源进行直接交互。这种限制有助于防止恶意网站获取用户的敏感信息或进行未经授权的操作。
同源策略通常应用于以下方面:
DOM访问限制:一个源的JavaScript代码只能访问来自相同源的DOM对象,不能直接操作其他源的DOM对象。
Cookie限制:浏览器会将Cookie与其关联的源关联起来,并且在同源策略下,一个源的Cookie不会被发送到另一个源。
XHR请求限制:XMLHttpRequest对象(用于AJAX请求)在同源策略下只能向同一源发起请求。
Frame和iFrame限制:同源策略限制了页面中一个frame或iframe内加载的内容只能来自相同的源。
两个URL只有在以下所有方面都匹配时才被视为同源:
协议(Protocol):两个URL的协议必须相同,例如都是HTTP或都是HTTPS。
主机名(Host):两个URL的主机名 ...
Write-Up
未读Ez ⛳ v2按照题解中所讲下面这段代码比较重要
1234567891011ua.caddy.chal-kalmarc.tf {tls internaltemplatesimport html_reply `User-Agent: {{.Req.Header.Get "User-Agent"}}`}http.caddy.chal-kalmarc.tf {tls internaltemplatesimport html_reply "You are connected with {http.request.proto} ({tls_version}, {tls_cipher})."}
发现User-Agent处有可能是存在模板注入的,所以我们去试验一下 {{7}},会回显,但是输入其他的比如 {{7*7}}的时候会返回500,这 ...
SSRF(Server Side Request Forgery服务端请求伪造),是一种由攻击者构造但是由服务端发起请求的一个安全漏洞。SSRF的攻击目标一般是从外网无法访问的内部服务器。
SSRF漏洞的原理
SSRF漏洞原理
(1)攻击者可以通过公网访问到某个web服务器;
(2)但是攻击者是无法通过公网访问到内网的其他设备或者办公区域;
(3)这时候如果想进行内网探测,web服务器同时存在SSRF漏洞,就能以web服务器作为跳板,进而攻击其他服务器或区域
SSRF利用的条件:
(1)web服务器存在SSRF漏洞;
(2)web服务器有访问本地或远程服务器的权限;
SSRF存在的位置:一般是web服务器提供了从其他服务器获取数据的功能。
(1) 分享功能:通过URL地址分享文章等,例如如下地址:
1http://share.xxx.com/index.php?url=http://www.xxx.com
通过url参数的获取来实现点击链接的时候跳到指定的分享文章。如果在此功能中没有对目标地址的范围做过滤与限制则就存在着SSRF漏洞。
(2)图片加载/下载:通过URL ...
CTF
未读引用Python 沙箱逃逸的经验总结
执行系统命令基础知识在 Python 中执行系统命令的方式有:
os
commands:仅限2.x
subprocess
timeit:timeit.sys、timeit.timeit("__import__('os').system('whoami')", number=1)
platform:platform.os、platform.sys、platform.popen('whoami', mode='r', bufsize=-1).read()
pty:pty.spawn('ls')、pty.os
bdb:bdb.os、cgi.sys
cgi:cgi.os、cgi.sys
…
以下为一个脚本测试了一下所有的导入 os 或者 sys 的库:
12345678910111213141516171819202122232425262728293031323334353637383940414243#-*- coding:utf8 -*-# By ...
level-1(no waf)遍历目标中含有内建函数 eval 的子类的索引号:
123456789101112import requestsif __name__ == "__main__": post_url = "http://124.70.99.199:10086/level/1" for i in range(200): param = { 'code': "{{().__class__.__bases__[0].__subclasses__()["+str(i)+"].__init__.__globals__['__builtins__']}}" } res = requests.post(post_url, data=param) if 'eval' in res.text: ...
前端检测主要是通过javascript代码进行检测,非常容易进行绕过。
原理Web应用系统虽然对用户上传的文件进行了校验,但是校验是通过前端javascript代码完成的。由于恶意用户可以对前端javascript进行修改或者是通过抓包软件篡改上传的文件,就会导致基于js的校验很容易被绕过。
如何判断当前页面使用前端is的验证方式
前端验证通过以后,表单成功提交后会通过浏览器发出─条网络请求,但是如果前端验证不成功,则不会发出这项网络请求;可以在浏览器的网络元素中查看是否发出了网络请求。
绕过方法
删除或者禁用js:火狐浏览器-->about:config-->JavaScriptenable-false (ajax)
使用代理上传文件,Burp Suite;上传符合要求的文件类型,抓包修改文件类型。
直接删除代码中onsubmit事件中关于文件上传时验证上传文件的相关代码即可或者可以不加载所有js,还可以将html源码copy一份到本地,然后对相应代码进行修改,本地提交即可。
CTFHub-web-文件上传-前端验证首先查看源码发现发现只允许jpg等几种后缀名文 ...
常用魔术方法__class____class__:用来查看变量所属的类,根据前面的变量形式可以得到其所属的类。 __class__ 是类的一个内置属性,表示类的类型,返回 <type 'type'> ; 也是类的实例的属性,表示实例对象的类。
12345678>>> ''.__class__<type 'str'>>>> ().__class__<type 'tuple'>>>> [].__class__<type 'list'>>>> {}.__class__<type 'dict'>
获取基类__bases__:用来查看类的基类,也可以使用数组索引来查看特定位置的值。 通过该属性可以查看该类的所有直接父类,该属性返回所有直接父类组成的元组(虽然只有一个元素)。注意是直接父类!!!
123456789101112> ...
知识1、数组绕过正则表达式123456if(preg_match("/[0-9]/", $num)){ die("no no no!"); }else(intval($num)){ echo $flag; }
preg_match第二个参数要求是字符串,如果传入数组则不会进入if语句
payload:num[]=1
2、intval函数的使用1intval( mixed $value, int $base = 10) : int
如果 base 是 0,通过检测 value 的格式来决定使用的进制:◦ 如果字符串包括了 “0x” (或 “0X”) 的前缀,使用 16 进制 (hex);否则,◦ 如果字符串以 “0” 开始,使用 8 进制(octal);否则,◦ 将使用 10 进制 (decimal)
123456789if($num==="4476"){ die("no no no!"); ...
基础理解PHP序列化:serialize()
序列化是将变量或对象转换成字符串的过程,用于存储或传递 PHP 的值的过程中,同时不丢失其类型和结构。
而PHP反序列化:unserialize()
反序列化是将字符串转换成变量或对象的过程
通过序列化与反序列化我们可以很方便的在PHP中进行对象的传递。本质上反序列化是没有危害的。但是如果用户对数据可控那就可以利用反序列化构造payload攻击。这样说可能还不是很具体,举个列子比如你网购买一个架子,发货为节省成本,是拆开给你发过去,到你手上,然后给你说明书让你组装,拆开给你这个过程可以说是序列化,你组装的过程就是反序列化
序列化首先每一个序列化后的小段都由; 隔开, 使用{}表示层级关系
数据类型
提示符
格式
字符串
s
s:长度:”内容”
已转义字符串
S
s:长度:”转义后的内容”
整数
i
i:数值
布尔值
b
b:1 => true / b:0 => false
空值
N
N;
数组
a
a:大小:{键序列段;值序列段;<重复多次& ...
基础简介网站中包含大量的动态内容以提高用户体验,比过去要复杂得多。所谓动态内容,就是根据用户环境和需要,Web应用程序能够输出相应的内容。动态站点会受到一种名为“跨站脚本攻击”的威胁,而静态站点则完全不受其影响。恶意攻击者会在 Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的
xss漏洞通常是通过php的输出函数将javascript代码输出到html页面中,通过用户本地浏览器执行的,所以xss漏洞关键就是寻找参数未过滤的输出函数
分类反射型XSS:<非持久化>
攻击者事先制作好攻击链接, 需要欺骗用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容),一般容易出现在搜索页面。DOM型XSS由于危害较小,我们将其归为反射型XSS
存储型XSS:<持久化>
代码是存储在服务器中的,如在个人信息或发表文章等地方,加入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,每当有用户访问该页面的时候都会触发代码执行,这种XSS非常危险,容易造成蠕虫,大量盗窃cooki ...