常用于上层语言构造特定调用链的方法,与二进制利用中的面向返回编程(Return-Oriented Programing)的原理相似,都是从现有运行环境中寻找一系列的代码或者指令调用,然后根据需求构成一组连续的调用链,最终达到攻击者邪恶的目的。类似于PWN中的ROP,有时候反序列化一个对象时,由它调用的__wakeup()中又去调用了其他的对象,由此可以溯源而上,利用一次次的 " gadget " 找到漏洞点。 常用魔法函数
续上文中的php反序列化,继续来看,这个POP的挖掘思路。在其中一直构思基于AST去自动化挖掘POP链,迫于开发能力有限。没有进展,随后找到了一个别的师傅已经实现好的项目。
PHP数据结构(十四) ——键树(双链树) (原创内容,转载请注明来源,谢谢) 一、概念 键树又称为数字查找树,该树的度>=2,每个节点不是存储关键字,而是存储组成关键字的一个字符或数值的一个数字。
反序列化漏洞是基于序列化和反序列化的操作,在反序列化——unserialize()时存在用户可控参数,而反序列化会自动调用一些魔术方法,如果魔术方法内存在一些敏感操作例如eval()函数,而且参数是通过反序列化产生的,那么用户就可以通过改变参数来执行敏感操作,这就是反序列化漏洞。
POP面向属性编程,常用于上层语言构造特定调用链的方法,与二进制利用中的面向返回编程(Return-Oriented Programing)的原理相似,都是从现有运行环境中寻找一系列的代码或者指令调用,然后根据需求构成一组连续的调用链,最终达到攻击者邪恶的目的。类似于PWN中的ROP,有时候反序列化一个对象时,由它调用的__wakeup()中又去调用了其他的对象,由此可以溯源而上,利用一次次的“gadget”找到漏洞点。
今天我们继续深入unserialize(),接着上文,我们已经讨论过PHP的反序列化如何导致漏洞,以及攻击者如何利用它来实现RCE攻击,现在让我们更深入地研究一些可以用来实现RCE的骚操作。
https://xz.aliyun.com/t/3674,https://xz.aliyun.com/t/6454
上次我们讨论了如果PHP的 unserialize() 函数让攻击者控制用户的输入,它将导致严重的漏洞,重温下大致概念,简单讲就是当攻击者控制传递给unserialize() 的序列化对象时,他可以控制所创建对象的属性。然后,通过控制传递给 _wakeup() 之类的magic方法的值,让攻击者有机会劫持应用程序流。
在 OWASP TOP10 中,反序列化已经榜上有名,但是究竟什么是反序列化,我觉得应该进下心来好好思考下。我觉得学习的时候,所有的问题都应该问 3 个问题:what、why、how:
对于逻辑结构来说,我们也是从最简单的开始。堆栈、队列,这两个词对于大部分人都不会陌生,但是,堆和栈其实是两个东西。在面试的时候千万不要被面试官绕晕了。堆是一种树结构,或者说是完全二叉树的结构。而今天,我们主要讲的就是这个栈的应用。
ps:很多小伙伴都催更了,先跟朋友们道个歉,摸鱼太久了,哈哈哈,今天就整理一下大家遇到比较多的php反序列化,经常在ctf中看到,还有就是审计的时候也会需要,这里我就细讲一下,我建议大家自己复制源码去搭建运行,只有自己去好好理解,好好利用了才更好的把握,才能更快的找出pop链子,首先呢反序列化最重要的就是那些常见的魔法函数,很多小伙伴都不知道这个魔法函数是干啥的,今天我就一个一个,细致的讲讲一些常见的魔法函数,以及最后拿一些ctf题举例,刚开始需要耐心的看,谢谢大家的关注,我会更努力的。
序列化是将对象转换为字节流,在序列化期间,对象将当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象状态,重新创建该对象,序列化的目的是便于对象在内存、文件、数据库或者网络之间传递。
0x00 前言 在今年六月份的强网杯中,有一道叫做pop_master的题目。简单描述就是从一万个类中,筛选出可利用的pop链路。在赛前,笔者并未了解过抽象语法树的概念。当时是通过PHP的魔术方法完成了这一个有趣的题目。 作者提供了环境生成器,才有了这篇文章(题目生成器):https://gitee.com/b1ind/pop_master 官方的WP正解为AST抽象语法树以及它的污点分析,题目质量还是相当可以的,至此,笔者想到了多种解题思路,并给大家分享。 0x01 思考方向 笔者在刚拿到这16w行代码也
继续我们上次的讨论,我们聊到了PHP的反序列化如何导致漏洞,以及攻击者如何利用POP链来实现RCE攻击。
一般这个知识点出现在ctf竞赛中时会给出反序列化点,但是我们却找不到POP链,无法构造POC。当我们只看到有反序列化点而没有POP链时我们就可以考虑利用php的原生类进行XSS。
本文初完成于2020年3月31日,由于涉及到0day利用,所以于2020年3月31日报告厂商、CNVD漏洞平台,满足90天漏洞披露期,遂公开。
在分析了Pornhub使用的平台之后,我们在其网站上检测到了unserialize函数的使用,其中的很多功能点(例如上传图片的地方等等)都受到了影响,例如下面两个URL:
反序列化漏洞是PHP漏洞中重要的一个印象面,而反序列化漏洞的危害则需要反序列化链来界定,如何挖掘一条反序列化链,往往成为了漏洞挖掘中最浪费时间的部分。
今年7月份,ThinkPHP 5.1.x爆出来了一个反序列化漏洞。之前没有分析过关于ThinkPHP的反序列化漏洞。今天就探讨一下ThinkPHP的反序列化问题!
今年7月份,ThinkPHP 5.1.x爆出来了一个反序列化漏洞。之前没有分析过关于ThinkPHP的反序列化漏洞。今天就探讨一下ThinkPHP的反序列化问题!
get()中将function以函数的方法调用,如果能将\p实例化为一个对象就能成功调用invoke()魔术方法
本次比赛Web差一题AK,但是云安全/人工智能/数据安全/区块链/MOBILE均未解出,不过运气比较好,很多优秀团队都去了学生组,最后擦边晋级,只能说很幸运。线下赛将由HACHp1(H神)带队出征,希望能在线下取得更好的成绩。CTF组依然欢迎各位有志青年前来加入,一起学习一起进步,一起让团队变得更强大!
0x00 背景 最近都在写反序列化漏洞的知识,本着循序渐进的过程,本篇研究到了反序列化与POP CHAIN相关的知识。在探索这方面知识的过程中,请教了许多师傅们并获得了相关案例和教科书般的文章,收获很多。今天斗哥就带着萌新们初探反序列化与POP CHAIN的相关知识。 什么是POP CHAIN?这里给出我自己的理解:把魔术方法作为最开始的小组件,然后在魔术方法中调用其他函数(小组件),通过寻找相同名字的函数,再与类中的敏感函数和属性相关联,就是POP CHAIN 。此时类中所有的敏感属性都属于可控的。当
token=$t; $this->password = $p; } public function login(){ return $this->token===$this->password; } } $sxsec = unserialize($_GET['sxsec']); $sxsec->token=md5(mt_rand()); if($sxsec ->login()){ echo $flag; }else{ echo "NO"; } ?>
有的时候我们会遇到只给了反序列化点,但是没有POP链的情况。可以尝试利用php内置类来进行反序列化。
基本用法(导入文件test.txt到table1表中,txt文件中的行分隔符为\r\n,默认tab键为字段分隔符,txt文件中的每个字段按顺序对应column1、column2,。。。导入表中)
有关可以参考 https://wh1tecell.top/2021/11/11/%E4%BB%8E%E4%B8%80%E9%81%93%E9%A2%98%E7%9C%8Bfast-destruct/
漏洞测试代码 application/index/controller/Index.php 。
PHP数据结构(六)——树与二叉树之概念及存储结构 (原创内容,转载请注明来源,谢谢) 一、树的含义 1、树为非线性结构,是n(n>=0)个节点的有限集,非空树有一个根节点,n>1时有m(m>0)个互不相交的子树。 2、树的节点包含一个数据元素及若干指向其他节点的分支,节点拥有子树的数目称为树的度,度为0的节点称为叶子或终端节点,度不为0的节点称为非终端节点或分支节点。树的度为各节点度的最大值。 3、节点的子树称为节点的孩子,节点称为孩子的双亲,同一个双亲的节点称为兄弟,节点的祖先为从根到该节点所经分支上的
以下的操作会比较新手,不是那种利用链pop、cc、cc1、或者任意类调用之类的,还请师傅们见谅,如有不妥的地方,请多多包含。
EDU-CTF是台大、交大、台科大三个学校的校赛,题目感觉都不错。TripleSigma这道题的反序列化POP链很有意思,官方wp写的很简单,在这里分析一下。 题目地址:http://final.kaibro.tw:10004/(需要梯zi)
这题其实还挺有意思的(如果会写脚本的话),但是我跟一半了感觉差不多了,懒得写脚本只能继续跟,多少是有点费眼睛。
首先,一些waf会对文件内容进行检索,如果发现有什么危险的函数,或者有什么危害的逻辑,都会进行拦击,所以我们不能写入一些危险的函数,否则就会被ban掉,其实在实际的攻击中,也是存在和这次论剑web1一样的绕过方式,在我们真正恶意代码前加入大量杂糅字符进行绕过;然后对后缀进行换行绕过;
PHP数据结构(二十四)——堆排序 (原创内容,转载请注明来源,谢谢) 一、定义 堆排序也属于一种选择排序,效率较高且空间占用相对较少。 堆的定义:n个元素的序列(k1,k2…kn),当且仅当满足以下1或者2的其中一种关系时,称为堆。 1)大顶堆:ki<=k2i且,ki<=k2i+1,其中i=1,2…n/2 2)小顶堆:ki>=k2i且,ki>=k2i+1,其中i=1,2…n/2 可将堆对应的一维数组看成一个完全二叉树,且满足非终端节点对应的值不大于(或不小于)其
Bleeping Computer 网站消息,一个安装了超过 9 万次的 WordPress 插件中存在一个严重的安全漏洞,威胁攻击者能够利用该漏洞获得远程代码执行权限,从而完全控制有漏洞的网站(该插件名为 "Backup Migration",可帮助管理员自动将网站备份到本地存储或 Google Drive 账户上)。
前段时间写的文章,在微博上说7月底结束分享一下,总算可以发了。感谢 @voidfyoo 提出的这个问题。
其实做我们这个行业,求职面试的时候会想,技术面试会问我们什么技术问题?答不上来怎么办?然后会纷纷求助自己的朋友,请教他当时是怎么面试的。问的什么技术问题,我们好提前有个准备。
PHP数据结构(八)——赫夫曼树实现字符串编解码(理论) (原创内容,转载请注明来源,谢谢) 一、树和森林 1、树的三种存储结构 1)双亲表示法——数组下标、值、上一级数组下标(根节点下标为负一) 2)孩子表示法 方法一:孩子链表——数组下标、值、下一级数组链表(无下一级指向null) 方法二:带父节点的子链表——结合双亲表示法和孩子链表,包含数组下标、值、上一级数组下标(根节点下标为负一)、下一级数组链表(无下一级指向null)。 3)孩子兄弟表示法——又称二叉树表示法或二叉链表表示法,
前段时间写的文章,在微博上说HW结束分享一下,总算可以发了。感谢 @voidfyoo 提出的这个问题。
本文仅供学习参考,其中涉及的一切资源均来源于网络,请勿用于任何非法行为,否则您将自行承担相应后果,我不承担任何法律及连带责任。 一、Insecure deserialization 01 Modifying serialized objects 描述 本实验使用基于序列化的会话机制,因此容易受到权限提升的影响。为解决实验室,编辑会话cookie中的序列化对象以利用此漏洞并获得管理权限。然后,删除 Carlos 的帐户。 您可以使用以下凭据登录自己的帐户:wiener:peter 解决方案 此实验与权限提升有
header 头里面发现 hint: “select * from `admin` where password=’”.md5($pass,true).”‘“
这段时间 Typecho 在十几天之内连续爆了两个最高可 getshell 的洞,先是 SSRF 可打内网,再是反序列化直接前台 getshell ……安全性这方面堪忧……
图片 前言 图片 WP WEB 扭转乾坤 大写一个F即可 图片 得到flag DASCTF{407a13a21a6b85b1236b003479468c82} unusual php phpi
这应该是一个很早以前就爆出来的漏洞,而我见到的时候是在TCTF2018 final线下赛的比赛中,是被 Dragon Sector 和 Cykor 用来非预期h4x0r’s club这题的一个技巧。
2019年4月11日,zdi博客公开了一篇A SERIES OF UNFORTUNATE IMAGES: DRUPAL 1-CLICK TO RCE EXPLOIT CHAIN DETAILED.
很久没正式打CTF,周末抽空参加了下安恒四月赛的DASCTF,个别题目质量还是蛮高的,这里把做出来的和赛后补充的做个记录。
PHP是一种广泛应用于Web开发的编程语言。它拥有灵活的特性和强大的库函数,其中包括对数组的操作。PHP的数组是一种有序的、可重复的数据集合。它们可以用来存储一组相关数据并进行各种操作。在PHP中,数组pop方法是一个常用的函数之一。本文将从不同角度对PHP数组pop方法进行详解。
一进屋,这该死的令人陶醉的氛围就让我丢盔卸甲,疲软不堪,就像是陷入了一位妙龄少女的温柔乡一般
领取专属 10元无门槛券
手把手带您无忧上云