XSS
导语XSS作为OWASP top10之一,是不容小视的安全威胁。
简介人们经常将跨站脚本攻击(Cross Site Scripting)缩写为CSS,但这会与层叠样式表(Cascading Style Sheets,CSS)的缩写混淆。因此,有人将跨站脚本攻击缩写为XSS。跨站脚本攻击(XSS),是最普遍的Web应用安全漏洞。这类漏洞能够使得攻击者嵌入恶意脚本代码到正常用户会访问到的页面中,当正常用户访问该页面时,则可导致嵌入的恶意脚本代码的执行,从而达到恶意攻击用户的目的。XSS的分类绿盟这张图我觉得挺好但是由于广泛被接受的分类是反射型、存储型、DOM-based,并且DVWA也是这三类,因此我们还按照反射型、存储型和DOM-based型来简单分析
DVWA之反射型XSSlow开局一个输入框,直接回显html,无任何过滤因此直接用<script>就可以利用了查看源代码
<?phpheader ("X-XSS-Protection: 0");// Is there any input?if( array_key_exists( "name ...
ssrfme
导语题源BUUCTF
正文直接访问就是源码,且题目源码也在github上了
#! /usr/bin/env python#encoding=utf-8from flask import Flaskfrom flask import requestimport socketimport hashlibimport urllibimport sysimport osimport jsonreload(sys)sys.setdefaultencoding('latin1')app = Flask(__name__)secert_key = os.urandom(16)class Task: def __init__(self, action, param, sign, ip): self.action = action self.param = param self.sign = sign self.sandbox = md5(ip) if(not os.path.exists(self.sand ...
面试押题
导语冲一波春招吧,希望能得偿所愿!找了找别人的面经,押个题先!
堆和栈的区别
堆
栈
一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收
由操作系统(编译器)自动分配释放
堆是由new分配的内存,一般速度比较慢,而且容易产生内存碎片
栈由系统自动分配,速度较快
分配方式类似于链表
操作方式类似于数据结构中的栈
存放使用new创建的对象,全局变量
存放基本数据类型的变量数据 和 对象的引用,局部变量
首先应该知道操作系统有一个记录空闲内存地址的链表,当系统收到程序的申请时,会遍历该链表,寻找第一个空间大于所申请空间的堆结点,然后将该结点从空闲结点链表中删除,并将该结点的空间分配给程序
只要栈的剩余空间大于所申请空间,系统将为程序提供内存,否则将报异常提示栈溢出。
在Windows下,栈是向低地址扩展的数据结构,是一块连续的内存的区域。这句话的意思是栈顶的地址和栈的最 大容量是系统预先规定好的,如果申请的空间超过栈的剩余空间时, 将提示overflow
堆是向高地址扩展的数据结构,是不连续的内存区域,堆的大小受限于计算机系统中有效的虚拟内存。
...
PHP反序列化漏洞
导语PHP反序列化是PHP代码审计中非常重要且有必要的一部分,今天由我来总结整合一下~
PHP反序列化漏洞PHP反序列化漏洞是PHP在反序列化过程中对输入的数据处理不当造成的。在PHP反序列化的过程中,类中或许会有一些魔术方法(magic methods),在反序列化操作执行的时候会自动执行,而其中如果有包含参数的危险操作,就会引起PHP反序列化漏洞。
序列化与反序列化做过一些网络编程的同学们应该都有过这样的体验,比如客户端和服务端都需要使用某个对象,而通过网络流发送对象首先就是要将他们变成流,这个过程就是序列化,从流中还原出原本的对象的过程就是反序列化。当然,转为json和xml的传输也是序列化。在PHP中,分别用serialize()和unserialize()函数实现序列化和反序列化。
魔术方法在PHP中内置了一些以两个下划线开头的函数,他们会在特定的操作时自动的执行。php内置的魔术方法见手册例如__construct()函数在我们新建一个类的对象时自动执行。
出现问题的地方unserialize()函数中,比较需要特别注意的魔术方法是destruct()和wakeup()函数 ...
安全岗笔试题集
导语持续更新0.0
深信服Q1:请尽可能列举你知道的网站未能正确使用图片验证码机制的情况,以及如何绕过其限制?
图形验证码的内容可OCR识别
多阶段的过程,先校验验证码,成功之后的下一步不需要验证码,可以直接抓包,跳过第一步的验证
验证码在服务段校验后,没有立即失效,需要客户端再次请求才会更新,只要客户端不再请求验证码即可使用原来的验证码
生成验证码的模块是否根据提供的参数生成验证码,如果是说明存在漏洞
有些验证码与数据包中的某个参数绑定,比如cookie中的某个属性,只要它们相匹配,验证码就认为是有效的。这种机制存在漏洞。
在某些情况下,验证码隐藏在HTML源码或通过其他方式获得“明文”
在服务器端,是否只有在验证码检验通过后才进行用户名和密码的检验,如果不是说明存在漏洞。
Q2:请尽可能列举你知道的网站未能安全实现文件上传功能的情况,以及如何绕过其限制?允许直接上传脚本文件:php、jsp、aspx结合web server解析漏洞一、IIS 5.x/6.0解析漏洞IIS 6.0解析利用方法有两种1.目录解析 /xx.asp/xx.jpg2.文件解析 wooyun.asp;.jpg ...
文件解析漏洞
导语文件解析漏洞主要由于网站管理员操作不当或者 Web 服务器自身的漏洞,导致一些特殊文件被 IIS、apache、nginx 或其他 Web服务器在某种情况下解释成脚本文件执行。大部分归因于web服务器自身漏洞。
IIS目录解析漏洞在 IIS5.x/6.0 中,如果有一个文件夹 以*.asp、*.asa、*.cer、*.cdx结尾,那么存在这个文件夹中的所有文件都会被IIS当做.asp执行。
比如,smartpillar.xyz的网站根目录有一个文件夹叫做test.asp,而文件夹里有一个一句话木马改后缀为.jpg的文件hack.jpg,当我们在访问smartpillar.xyz/test.asp/hack.jpg时,就相当于访问了hack.asp
文件名解析漏洞在 IIS5.x/6.0 中,分号后面的不被解析。利用这个漏洞,黑客就可以绕过一些过滤直接上传木马。
比如当我们向服务器中传送hack.php;.jpg时,就可以绕过简单的后缀名过滤,而在服务器内部,hack.php;.jpg其实就是hack.php。
畸形解析漏洞微软发布了IIS7.0修补了IIS6.0的解析漏洞,没想到I ...
wmi
导语wmi全称为Windows Management Instrumentation,在win10下是一个非常好使的插件,可以用来管理、监控计算机资源。
简介WMI基于CIMOM,即公共信息模型对象管理器,是一个描述操作系统构成单元的对象数据库。WMI有一组API,因此很多语言都可以对wmi进行相应的调用。windows官方建议使用VB和C#。(但没必要针对WMI的脚本对象编程本质上来将就是针对CIM(Common Information Model,公共信息模型)的编程,WMI的获取与操作的内容都来自于CIM存储库一般使用wql语句来获取想要的内容,wql类似于sql,比如下面这句。usagelist = wmi.ExecQuery(r'select IDProcess,Name,PercentProcessorTime from Win32_PerfFormattedData_PerfProc_Process')就可以返回进程id,进程名和他的CPU占用率,非常的好用。
使用工具WMI支持Powershell、Vbscript和C#script,而windows本身 ...
BUU刷题日记_get_started_3dsctf_2016
导语get_started_3dsctf_2016首先checksec
拖进IDA看看
输出一个西班牙语,然后就gets,然后return,需要栈溢出劫持控制流。
可以看到在main上面有一个get_flag函数
getflag函数中有两个实参a1,a2,四个本地变量v2-v5
所以我们在溢出覆盖返回地址之后,要进一步设置getflag的栈空间
i春秋-random
导语点击这里去答题
打开可以看到一个.pyo的文件和一个.enc的文件其中.pyo是python编译后的字节码文件,可以使用EasyPythonDecomplier进行反编译,获取对应的python代码。同时也有在线工具可以用。而.enc应该是经过了encrypt加密后的结果,内容是
208 140 149 236 189 77 193 104 202 184 97 236 148 202 244 199 77 122 113
将.pyo反编译,可以得到这样的代码:
# Embedded file name: encrypt.pyfrom random import randintfrom math import floor, sqrt_ = ''__ = '_'____ = [ ord(___) for ___ in __ ]_____ = randint(65, max(____)) * 255for ___ in range(len(__)): _ += str(int(floor(float(_____ + ____[___] ...
《从0到1:CTFer成长之路》Web之sql2
导语我没找到他的题目idXD
sql2打开题目提示去login.php看。查看源代码,提示url加?tips=1开启报错,用burpsuit可以查看,立刻想到使用报错注入同时先简单尝试一下,发现账号存在字符注入,用单引号闭合(1’ or 1=1和1’ and 1=2)使用burp,如下当然,借助右边回应是账号不存在还是账号错误可以进行布尔注入,但是既然有了提示,为什么不用呢?使用extractvalue报错注入,得到database为note1' or 1=1 and (extractvalue('anything',concat('\~',(select database()))))#然后理所应当接下来操作是information_schema三连,但是他老说我语法有错,我看了半天直接心态小崩,搁网上找了找别人的wp,然后发现他过滤了select……于是双写select来information_schema三连。1' or 1=1 and (extractvalue('anything',concat('~& ...