当前位置:首页 > 黑客服务 > 正文内容

POP链+字符逃逸+stristr绕过

访客4年前 (2021-04-16)黑客服务472

ctfshow前几天举办了一个比赛,其中一题web很是觉得挺好的,讲难也不难但就是很考思路和知识点的积累整合运用。

0x00:写在前面

此题挺好的,思路很锻炼人

涉及知识点:反序列化pop链构造、反序列化字符串溢出

一些前置知识

O:5:"Login":1:{s:8:"username";O:8:"register":1:{s:9:"user_name";s:2:"ee";}}s:2:"ww";}

对这样一串序列化的字符串进行反序列化,得到的对象是register的对象

也就是说:我反序列化上面这个序列化字符串后为$a,那么$a->username就是register的对象

注意格式,不能写成如下的(多了个;),否则反序列化报错

O:5:"Login":1:{s:8:"username";O:8:"register":1:{s:9:"user_name";s:2:"ee";};}s:2:"ww";}

那么当然假使register类里有自动能执行的逻辑,比如construct里的system("ls"),那么当上面反序列化执行完毕后,system也自动执行

反序列化字符逃逸这里不提了,公众号文章写过,可以下翻查看通过原有的过滤机制实现拼接和注入拼接一个道理,拼接掉原有的语句,插入我们的恶意语句

pop链的构造,也在公众号文章写过,个人非常喜欢写反序列化pop链的题目,逻辑性很强就像做游戏一样

所以这题就是利用字符逃逸,实现类中类,也就是构造一个类似上面的那串序列化字符一样,去触发我们的

pop链

0x01:开始正题

先一把梭,扫了一下,发现了 hint.php和class.php

hint有如下提示,说明hint,php后端是有东西的,遂罢,继续信息收集

题干说进入后台有惊喜,弱口令admin/admin888 登录成功 得到了这个提示

乍一看没啥用,好似被捉弄了一样,但题干说了登录有惊喜那就多留意一下,查看了一下源代码,搜索了一下php,找到了looKMe.php

访问得到如下源码

分析可知可以文件包含读源码,读取了hint.php源码得到如下新的页面

ezwaf.php、class.php、index.php、lookMe.php,分别读取源码,以下截取有用部分

ezwaf.php

index.php

class.php

截取完看着舒服多了,本地搭起来开始分析

首先分析ezwaf.php,涉及三个检测函数

第一个get函数,进行匹配替换,将forfun替换为chr(0)*chr(0),相当于6位替换为3位。这里也是反序列化逃逸的关键点

第二个checkData函数,利用stristr函数检测内容是否有username和password。stristr绕过方式如下

注意:strstr是区分大小写的,stristr不区分

第三个checkLogData函数,preg_match没有i模式众所周知区分大小写,大小写绕过即可

再来看index.php的核心代码,逻辑很简单,

通过传入账号密码到class.php的Login类进行序列化,且序列化过后的结果进行ezwaf.php三个函数挨个处理,再被反序列化

class.php有四个类,那么能出flag的地方在magic类的getFlag方法里

现在只要想方设法,让程序反序列化到这个magic的getFlag方法内

过了一遍代码,看到了register的__toString方法,且__toString方法内的

return $this->mdPwd->pwd;

很明显对应着把$this->mdpwd=new magic(),然后再触发magic的__get魔术方法(请求类里不存在的属性则自动触发),哎~ 是吧 __get方法里 调用了getFlag方法,那么就出了

再看PersonalFunction类里的checkFunction方法,被__destruct方法自动触发,接收一个数组类型,然后和自带的数组进行stristr进行比较,注意!stristr是处理字符串的,那么此时只要让stristr处理我们的register类是不是就自动触发__toString了

所以整个pop链逻辑我们就清楚了,触发流程如下

那么此时先来构造一个初步的pop链脚本

当然啦$c这里需要url编码,因为是protected的,这里只先看效果

ok pop链出来以后,再来看index.php的这里逻辑,首先传一个正常账号密码,看一下序列化效果

上面这个样子,那么我们想要实现一开始说的类中类就是如下格式类型应该怎么办

目标格式

很简单,通过ezwaf.php的get函数去逃逸,然后我们自己构造一个新的pass_word,也就是构造成如下,在头部加上";s:12:"%00*%00pass_word";s:329:"1 注意这里是30位。

再传入index.php看看效果,这样测试更直观,提高容错性

所以我们需要吃掉的就是30位,然后我们的拼接的如下就成功衔接

这里 forfun 6位变为3位,也就是6*n->3*n

我们这里";s:12:"%00*%00pass_word";s:329:"1 是30位,那就只需10个forfun即可

还需要绕过:

register|magic|PersonalFunction

将这个大小写绕过

username=\70sername
password=\75assword

注意序列化里的s要变为S,这样才能解析16进制

所以最终payload

username=forfunforfunforfunforfunforfunforfunforfunforfunforfunforfun&password=1";S:12:"%00*%00pass_word";O:16:"PerSonalFuNction":3:{S:11:"%00*%00username";S:5:"Tkitn";S:11:"%00*%00\70assword";S:3:"123";S:7:"%00*%00func";a:1:{i:0;O:8:"rEgister":4:{S:11:"%00*%00\75sername";S:5:"Tkitn";S:11:"%00*%00\70assword";S:3:"123";S:9:"%00*%00mobile";S:3:"133";S:8:"%00*%00mdPwd";O:5:"Magic":1:{S:11:"%00*%00\75sername";S:5:"admin";}}}}

最终burp传入我们的payload即可出flag

0x02:总结

非常综合的一道题,php反序列化很有意思,结合pop链和字符溢出。很能训练思维能力。

扫描二维码推送至手机访问。

版权声明:本文由黑客接单发布,如需转载请注明出处。

本文链接:https://therlest.com/105931.html

分享给朋友:

“POP链+字符逃逸+stristr绕过” 的相关文章

约茶app约茶APP

最新约茶app都是哪些?整理了30本这篇文章主要介绍了约茶app,包括约茶app ios下载,下面小编整理了约茶app的图文教程,看看约茶app苹果版详细步骤吧! 觉得网上的一些答 据新快网2021年10月20日03:31:27的新闻报道,微博网友@R卜傲晴 爆料。 平安夜来临之际,事件,在网上...

贾秀东个人资料简介(简历及图片)

贾秀东人物概况 本页面提供了贾秀东个人资料简介(简历及图片),贾秀东是谁?贾秀东个人简介资料完整设计了网页求职找工作编辑个人简历作品所需要的贾秀东网站常用模板元素,不保证贾秀东人物数据真实,任何问题请联系管理员调整。 贾秀东图片 贾秀东个人资料简介 贾秀东,中国国际问题研究所特聘研究员。1...

吃鸡鸭的屁股会有病吗?我非常爱吃鸡鸭的屁股,但经常吃会有病吗?另

吃鸡鸭的屁股会有病吗?我非常爱吃鸡鸭的屁股,但经常吃会有病吗?另 鸡鸭的肛门附近组织,布满大大小小的腺体,各类秽物与毒素都在这些腺体囤积;鸡鸭的肛门也有非常高密度的大肠杆菌,所以鸡鸭的屁股不是少吃的问题,而是不能吃.吃得少可能没觉出怎样,多了问题就显出来了.而且鸡鸭屁股的大肠杆菌会随着蛋生出来的时...

身份证信息被黑客盗取(黑客能把手机内身份证信息盗取吗)

一、身份证信息被黑客盗取(黑客能把手机内身份证信息盗取吗)方法总结 1、黑客通过手身份姓名能否窃取别人银行卡里。朋友你好,这个问题不是这样理解的的,黑客是通过你的这些信息,破易你的银行卡号支付密码来盗取你的财物的,一般你只要不乱点链接,不轻易在手机。黑客控制了手机,窃取了身份证号码手机号姓名等所有...

古文化常识(中国古代文化常识大全)

1.中国古代文化常识 文学常识? 四本书:《论语》、《中庸》、《孟子大学》 五经:《诗经》《礼记》《周易》《春秋》 乐府双壁:木兰诗孔雀东南飞 三个字:警告世界,说真话,说真话,唤醒世界,说同样的话 第二枪:第一枪很厉害,第二枪也很厉害 三官:石渠官、潼关官、新安官 三次告别:新婚、老...

dnf国庆套礼包内容 「地下城国庆套2021」

很好,198元类型,比其他的高级时装属性好很多,称号加什么?还副送什么?礼包包含多少套物品?知道的说下!30号维护更新,奇幻之旅称号,非常划算。宝珠,价格是228和198两种时装套。 效果和白虎差不多,包括光环装扮,来说还可以。 100雷米,估计还几套新国庆时装,DNF2012国庆时装198礼包,最...

评论列表

南殷清引
2年前 (2022-07-07)

、lookMe.php,分别读取源码,以下截取有用部分ezwaf.phpindex.phpclass.php截取完看着舒服多了,本地搭起来开始分析首先分析ezwaf

萌懂橪书
2年前 (2022-07-07)

遂罢,继续信息收集题干说进入后台有惊喜,弱口令admin/admin888 登录成功 得到了这个提示乍一看没啥用,好似被捉弄了一样,但题干说了登录有惊喜那就多留意一下,查看了一下源代码,搜索了一下php,找到了looKMe.php访问得到如下源码分析可知可以文件包含读源码,读取了hin

丑味败骨
2年前 (2022-07-07)

\70assword";S:3:"123";S:9:"%00*%00mobile";S:3:"133";S:8:"%00*%00mdPwd";O:5:"Magic":1:{S:11:"%00*%0

蓝殇亡鸦
2年前 (2022-07-07)

hp、lookMe.php,分别读取源码,以下截取有用部分ezwaf.phpindex.phpclass.php截取完看着舒服多了,本地搭起来开始分析首先分析ezwaf.php,涉

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。