首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

CTF实战13 逻辑漏洞

重要声明 该培训中提及的技术只适用于合法CTF比赛和有合法授权的渗透测试,请勿用于其他非法用途,如用作其他非法用途与本文作者无关 我们今天来了解一下逻辑漏洞 逻辑漏洞 我们知道,越复杂的应用,权限和流程问题就会越多...由于开发人员的疏忽和不小心,就会造成系统的逻辑Bug 当然,对于开发人员叫Bug但是对于Hacker,就是漏洞了 逻辑漏洞只是对于一系列由于开发人员的失误造成的漏洞的总称 每个逻辑漏洞都有其不同的原理和逻辑问题...这里也没法总结出来一个像SQL注入那样的原理和测试方法 更多的是要测试人员在进行业务逻辑测试的时候 头脑中形成的业务逻辑线,要比开发人员清晰(和比智商差不多) 但是我们还是有一些通用的套路 常见逻辑漏洞类型...一、权限控制漏洞 这个漏洞是最常见和最普遍的漏洞 比如我们可以查询其他账户的信息,或者修改其他账户的昵称等等信息 这属于权限控制没做好的漏洞 二、数据校验漏洞 比如我们可以提交异常数据进行测试,包括了提交负数

86210
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    CTF竞赛 | PHP反序列化基础

    通过序列化与反序列化我们可以很方便的在PHP中传递对象,下面小编给大家介绍反序列化的原理和一些常见的利用方式。...01 序列化和反序列化概述 (1)序列化和反序列化序列化:将对象的状态信息转换成可存储或者传输的形式过程; 反序列化:将可存储或者传输的形式过程恢复为对象的过程; 存储形式:二进制、XML、JSON...(2)常见反序列化漏洞: Weblogic: CVE-2018-2893、CVE-2018-2628、CVE-2017-10271 Jboss: CVE-2017-12149、CVE-2017-...02 反序列化中常用的魔术函数 在利用对PHP反序列化进行利用时,经常需要通过反序列化中的魔术方法,检查方法里有无敏感操作来进行利用。...此处就要用到CVE-2016-7124漏洞,当序列化字符串中表示对象属性个数的值大于真实的属性个数时会跳过__wakeup的执行。 <?

    1.2K10

    ctf-web:文件上传漏洞和文件解析漏洞

    这次的内容是关于文件上传的漏洞和文件解析的漏洞的内容,在下面我会进行一个关于这两个方面的内容的实际操作以及原理介绍....先说说这两个漏洞的区别. 一.文件上传漏洞 这个漏洞产生的原因是因为上传文件的不严谨所产生的....二.文件解析漏洞 这个漏洞是由于服务器的原因造成的,就比如我们一会儿要举例的iis6.0服务器就有这个漏洞....因此,我会特地去讲一下这个东西的如何去实现的.后面我会把网站的源码附上.很多服务器都存在这个漏洞,我这里就介绍iis6.0的文件解析漏洞,想看其他的服务器的漏洞可以去百度一下....二.文件上传漏洞和文件解析漏洞的结合使用 文件上传漏洞产生的原因就不像上一个是因为服务器产生的了,而是因为程序员的不严谨而产生的.

    84530

    序列化漏洞

    这几天网上又报出来Dubbo的一个反序列化漏洞,一时间Dubbo又被推上了风口浪尖,对dubbo本身也褒贬不一....漏洞报告地址如下,有兴趣的可以自己研究下: https://www.mail-archive.com/dev@dubbo.apache.org/msg06544.html 其实在2月份就有相似的漏洞报出来了...,漏洞地址如下: https://www.mail-archive.com/dev@dubbo.apache.org/msg06225.html 我们抛开Dubbo不提,看看反序列化漏洞到底是什么样的?...序列化: 序列化是将Java对象转换成二进制字节,这些字节可以保存到磁盘上, 也可以通过网络传输,发送到其他服务上....调用方法: ObjectOutputStream.writeObject(Object) 反序列化: 与序列化相反,是将二进制字节转换成Java对象 调用方法: ObjectInputStream.readObject

    26710

    Web漏洞 | JAVA反序列化漏洞

    目录 反序列化漏洞 序列化和反序列化 JAVA WEB中的序列化和反序列化 对象序列化和反序列范例 JAVA中执行系统命令 重写readObject()方法...Apache Commons Collections 反序列化漏洞payload JAVA Web反序列化漏洞的挖掘和利用 由于本人并非JAVA程序员,所以对JAVA方面的知识不是很懂...本文参照几位大佬的博客进行归纳总结,给大家阐述了JAVA反序列化漏洞的原理以及Payload的构造,文章末尾会放出参考链接。 Part 1 反序列化漏洞 JAVA反序列化漏洞到底是如何产生的?...反序列化漏洞从无到有 Lib之过?...Java反序列化漏洞通用利用分析 Java反序列化漏洞分析 Commons Collections Java反序列化漏洞深入分析

    74910

    CTF实战11 任意下载漏洞

    重要声明 该培训中提及的技术只适用于合法CTF比赛和有合法授权的渗透测试,请勿用于其他非法用途,如用作其他非法用途与本文作者无关 我们今天来了解一下任意下载漏洞,这个漏洞原理很简单 任意下载漏洞...也叫 许多网站开放下载文件功能,由于下载功能代码对下载文件类型、目录未做限制或限制不当,导致攻击者可下载服务器任意文件 这个漏洞的原理很简单,我们现在说说攻击思路...最后上面两种都不行那就直接数据库提权吧 其他源代码 下载到了没有数据库配置文件的源代码,我们可以做的有 分析源代码,寻找漏洞,进一步攻击 或者还有一种 服务器敏感文件 我们可以下载passwd、shadow...利用方法 的利用方法中的部分内容与的利用方法相同,如: 利用%00截断等绕过后缀限制等等

    95930

    漏洞复现 - - - Fastjson反序列化漏洞

    我们搞懂了什么是fastjson那我们理解一下序列化,反序列化又是什么意思呢 。...序列化:将对象转化成字节的过程 作用:因为对象统一存储在JVM中,所以就导致了如果JVM关闭,对象也就会消失。而序列化就可以将对象转换为字节的序列,可以写进硬盘文件中实现长期的保存。...反序列化:将字节转化成对象的过程 作用:将序列组成的字节,转换为对象。 对象序列化就是将对象的数据复制一个一模一样的对象(个人理解) 4. ...Fastjson漏洞产生原因 反序列化之后的数据本来是没有危害的,但是用户使用可控数据是有危害的 漏洞信息: fastjson 1.2.24 反序列化导致任意命令执行漏洞:fastjson在解析json...Fastjson 1.2.47 远程命令执行漏洞:fastjson于1.2.24版本后增加了反序列化白名单,而在1.2.48以前的版本中,攻击者可以利用特殊构造的json字符串绕过白名单检测,成功执行任意命令

    1.5K20

    CTF实战14 任意文件上传漏洞

    重要声明 该培训中提及的技术只适用于合法CTF比赛和有合法授权的渗透测试,请勿用于其他非法用途,如用作其他非法用途与本文作者无关 我们今天来了解一下任意文件上传漏洞 什么是文件上传 文件上传 文件上传包括了上传头像...代码层 开发者由于对安全意识不足,或者编写代码时对上传文件的合法校验存在缺陷,导致上传漏洞的产生 2. 应用层 Web容器漏洞、cgi、配置不当等等 漏洞的利用 我们现在说说怎么利用漏洞 一....存在解析漏洞的上传点 这个利用就比较暴力了,如果是你自己发现的某个Web中间件存在这种漏洞,那基本都是0day类型的 这个漏洞的成因也很多,基本就是,Web中间件的漏洞或者Web服务器与cgi处理的差异...Apache解析漏洞 这个漏洞和上面的也差不多 这个漏洞的成因和我们上期讲的逻辑漏洞是一样的 首先我们构造一个文件名为 webshell.php.jpg Apache呢会先从后往前尝试解析,然后解析到了一个...Nginx解析漏洞 这个漏洞呢是Nginx本身代码编写时候就存在的,Nginx与php-cgi处理方式存在差异造成了这个漏洞 我们可以这样 首先在本地有个webshell.php文件 之后我们上传,然后将这个上传的

    4.6K40

    CTF笔记-1-PHP序列化与反序列化(__sleep与__wakeup)

    1.前言:总结一下序列化和反序列化的入门知识 __sleep 与 __wakeup 序列化: 将一个对象转化成字符串 反序列化:将一个字符串转换成对象 2.魔术方法: __construct: 在创建对象时候初始化对象...这里可能不理解序列化后的sex和age,这个是由访问控制修饰符导致的(访问修饰符的不同,序列化后的属性名的长度和属性名会有所不同。..._sleep魔术方法,那么,在序列化对象时__sleep魔术方法会优先调用,然后再继续执行序列化操作 结果:O:4:"peak":1:{s:3:"age";s:2:"18";} 如上所示:只要序列化时执行了__sleep,就只会序列化__sleep中的属性 5.PHP反序列化序列化,顾名思义,...> 输出:O:4:"Demo":1:{s:4:"flag";s:12:"flag{aaaaaa}";} bbbbbb 一般做CTF题目时绕过的方法就是:先序列化字符串,然后使序列化后字符串中属性的个数大于真实对象中属性的个数

    1.1K20

    PyYaml反序列化漏洞

    Yaml是什么 YAML是一种可读性高,用来表达数据序列化的格式。YAML是”YAML Ain’t a Markup Language”(YAML不是一种标记语言)的递归缩写。...,就可以顺利导入该文件作为模块,执行当中的命令 首先写一个文件名为test.py的文件,内容如下 import os os.system('calc') 在触发漏洞的文件里 import yaml yaml.load...python/object/new:test.aaaa {}' ) 如果写入的文件和触发漏洞的文件不在同一目录下 则需要加上目录,比如同级的uploads目录 yaml.load("!!...修复方法 1、按照官方推荐使用safe_load对于序列化内容进行加载。 2、检测加载文件头防止加载代码执行函数。...参考链接: PyYAML反序列化防御和ByPass | 柠檬菠萝 PyYAML反序列化漏洞 | DAMOXILAI 浅谈PyYAML反序列化漏洞 | Al1ex

    61240

    PHP反序列化漏洞

    序列化(serialize)和反序列化(unserialize) 序列化就是将对象转化为字节序列/字符串,便于之后的传递与使用,序列化会保存对象所有的变量。...__isset()对不可访问或者不存在属性调用isset()或者empty()是被调用 __unset()对不可访问或不存在的属性进行unset()时被调用 反序列化漏洞 条件 unserialize...()函数的参数可控 php中有可以利用的类并且类中有魔术方法 漏洞成因 当传给unserialize()的参数可控时,就可以注入精心构造的payload,在进行反序列化是就可能触发对象中的一些魔术方法,...Web_php_unserialize 题目来源攻防世界 前置知识:在 PHP5 < 5.6.25, PHP7 < 7.0.10 的版本存在__wakeup()的漏洞。...正则表达式完整教程 利用__wakeup()漏洞绕过 然后绕过__wakeup(),修改类的属性个数大于真是属性个数即可。

    98540

    PHP序列化漏洞原理

    本文作者:cream(贝塔安全实验室-核心成员) PHP序列化漏洞原理 1、序列化(串行化) 2、反序列化(反串行化) 3、序列化实例分析 4、反序列化实例分析 5、祸起萧墙---Magic函数 5.1...PHP反序列化漏洞CTF练习题 7、防御PHP序列化漏洞 1、序列化(串行化) 将变量转换为可保存或传输的字符串的过程; 2、反序列化(反串行化) 在适当的时候把这个字符串再转化成原来的变量使用。...常见的php系列化和系列化方式主要有:serialize,unserialize;json_encode,json_decode。...6.2.2 漏洞介绍和复现 Typecho博客软件存在反序列化导致任意代码执行漏洞,恶意访问者可以利用该漏洞无限制执行代码,获取webshell,存在高安全风险。...6.3 bugku 文件包含和PHP反序列化漏洞CTF练习题 访问URL:http://192.168.2.101/,提示 you are not the number of bugku !

    1.8K10

    php反序列化漏洞

    在说php反序列化漏洞之前,先讲讲什么是类,什么是对象,什么是函数 什么是类 类的概念:类是具有相同属性和操作的一组对象的集合。...()序列化函数 定义 序列化(serialization)在计算机科学的数据处理中,是指将数据结构或对象状态转换成可取用格式(例如存成文件,存于缓冲,或经由网络中发送),以留待后续在相同或另一台计算机环境中...,序列化,反序列化一般用作缓存。...说了这么多,什么是反序列化漏洞呢? 当一个被序列化的对象,反序列化回去的时候,触发了魔术方法。而调用魔术函数时,传进去的值是用户可控的。...再说简单一点,就是服务器接收了攻击者上传的反序列化过的字符串,未经严格过滤,就把其中的变量作用到魔法函数里面,从而产生了预料之外的结果,造成的漏洞 演示 这里以wakeup()函数为例: mydx.php

    75142

    PHP反序列化漏洞

    ctf很多题型也都是考察PHP反序列化的相关知识 PHP的序列化 序列化函数serialize() 首先我创一个Ctf类 里面写了三个属性 后创建了一个ctfer对象 将Ctf类里的信息进行了改变。...用的时候在反序列化出来就ok了 O:3:"Ctf":3{s:4:"flag";s:13:"flag{abedyui}";s:4:"name";s:7:"Sch0lar";s:3:"age";s:2:"...18";} O代表对象 因为我们序列化的是一个对象 序列化数组则用A来表示 3 代表类名字占三个字符 ctf 类名 3 代表三个属性 s代表字符串 4代表属性名长度 flag属性名 s:13:"flag...该属性长度为6 s:9:"Ctfflag" //ctf前后也就是类名前后出现两个%00 所以长度为9 PHP的反序列化序列化函数unserialize() 反序列化就是将一个序列化的字符串,还原回去...反序列化之前重新给flag属性赋值 当序列化字符串表示对象属性个数的值大于真实个数的属性时就会跳过__wakeup的执行。这个大家应该都知道很常见的姿势了。为了直观一点找了些考察反序列化ctf

    50620

    PyYAML反序列化漏洞

    漏洞成因 通过跟踪$PYTHON_HOME/lib/site-packages/yaml/constructor.py文件,查看PyYAML源码可以得到其针对Python语言特有的标签解析的处理函数对应列表...该函数会根据参数来动态创建新的Python类对象或通过引用module的类创建对象,从而可以执行任意命令~ 通用POC 经过上面的了解与验证,我们知道只要存在yaml.load()且参数可控,则可以利用yaml反序列化漏洞...漏洞修复 在PyYAML>=5.1版本中有两个补丁限制了反序列化内置类方法以及导入并使用不存在的反序列化代码: Path 1: ? Path 2: ?...简易测试 若要在ruamel.yaml中反序列化带参数的序列化类方法,我们有以下方法: load(data) load(data, Loader=Loader) load(data, Loader=...要序列化数据,可以使用下面的安全函数: ?

    2K10
    领券