CTF论剑场-(web21)一道很有质量的web题、反序列化

OnionT@KillBoy
OnionT@KillBoy
作者
47
文章
0
粉丝
渗透测试9912,8979字数 714阅读2分22秒阅读模式
AI智能摘要
你不是admin?这只是第一道锁。一道看似简单的CTF题,却精巧地串联了文件包含与反序列化两大漏洞。本文将带你层层剥茧,从一句提示开始,通过源码审计构造关键payload,最终绕过所有限制,直抵目标文件。破解它,你不仅会得到一个flag,更能深刻理解代码逻辑如何被精心设计的攻击链所颠覆。
— AI 生成的文章内容摘要

这个题的writeup我准备认认真真的写一下,因为这道题我觉得还是很有质量的,有文件包含,代码审计和反序列化的一些东西。。。

打开页面,出现了一行提示,说我不是admin,然后查看页面源代码。

CTF论剑场-(web21)一道很有质量的web题、反序列化-图片1

发现了一行代码,猜测这道题是个审计题,从代码中可以看到,后端接收到user=admin时,会包含class.php的文件,直接访问class.php后发现什么都没有,一片空白。然后仔细观察上面的代码

CTF论剑场-(web21)一道很有质量的web题、反序列化-图片2

发现这个的file_get_contents函数竟然读取的是前端发送的数据,正常来讲这个函数是读取文件的,还有就是它通过GET接收了一个file,然后把class.php包含进去了,然后我们试试文件包含,给user传一个admin,才能使文件包含成立,然后试一下文件包含漏洞,看看能不能爆出源码。

CTF论剑场-(web21)一道很有质量的web题、反序列化-图片3

爆出了index.php的源码,然后转码看一下。发现和提示中的代码还是有区别的,当然我们以这个为准,因为这才是index.php里面真正的代码。

CTF论剑场-(web21)一道很有质量的web题、反序列化-图片4

然后我们再看下class.php的源码

CTF论剑场-(web21)一道很有质量的web题、反序列化-图片5

代码分析:
index.php中接收三个参数的值,分别是user、file、pass,还有一个提示,说明flag在f1a9.php这个文件中,由于存在文件包含,可以直接爆出代码,所有用文件包含尝试查看f1a9.php中的代码时发现,是不能成功的,只能用其他办法了。
再来看class.php,里面是一个PHP类,但是查看所有的代码发现没有调用这个类,而这个类才是拿到flag的关键。所以要想办法调用这个class.php中的类。发现index.php中有包含这个class.php文件的代码,前提是要满足如下的判断语句:

CTF论剑场-(web21)一道很有质量的web题、反序列化-图片6

有两个if语句,先满足第一个,让$user的值为admin,然后再让第二个if为False,就能成功的包含class.php了,于是构造如下:

CTF论剑场-(web21)一道很有质量的web题、反序列化-图片7

然后我们再来看看这个unserialize();这是个反序列化函数,我们可以利用这个函数,传入参数导致调用index.php中的class类,然后读取f1a9.php中的内容。

有关反序列化的知识:https://www.cnblogs.com/dragonli/p/5527414.html
反序列化漏洞的知识:https://www.cnblogs.com/perl6/p/7124345.html

于是我们来手写一个序列化,调用class.php类,然后让file=f1a9.php。
构造payload:O:4:"Read":1:{s:4:"file";s:8:"f1a9.php";}
这串序列号进行反序列之后就等于:

CTF论剑场-(web21)一道很有质量的web题、反序列化-图片8

然后将payload代入到pass参数传入后端,查看返回结果。

CTF论剑场-(web21)一道很有质量的web题、反序列化-图片9

查看页面源代码:

CTF论剑场-(web21)一道很有质量的web题、反序列化-图片10

成功拿到flag。。。

http://www.oniont.cn/index.php/archives/61.html

 
OnionT@KillBoy
评论  99  访客  99
    • 茶韵幽远
      茶韵幽远 0

      这题真的挺爽的。

        • 红香圃主
          红香圃主 0

          @ 茶韵幽远 确实,一遍过的时候很解压。

        • 熊猫侠客
          熊猫侠客 0

          瓜皮,反序列化真是坑。

          • 袋熊胖胖
            袋熊胖胖 0

            admin参数真的只能这么传吗?

              • 瑶琴古韵
                瑶琴古韵 0

                @ 袋熊胖胖 对,user必须是admin,不然包含不了文件。

                • 星际漫游者
                  星际漫游者 0

                  @ 袋熊胖胖 admin必须GET传,post不行,试过了。

                  • 红衣怨姬
                    红衣怨姬 0

                    @ 袋熊胖胖 admin参数不就是GET传进去吗,还能咋传?

                    • 社会我喵哥
                      社会我喵哥 0

                      @ 袋熊胖胖 payload能不能简化真不重要,关键是得懂原理,不然换题还是不会。

                    • 旧时光摆渡人
                      旧时光摆渡人 1

                      文件包含又是老套路,笑死。

                        • 旧茶馆
                          旧茶馆 0

                          @ 旧时光摆渡人 老套路归老套路,可玩出花来的还是少数,这次算一个。

                          • 脆皮鸭文学爱好者
                            脆皮鸭文学爱好者 0

                            @ 旧时光摆渡人 老套路归老套路,可每次还是能卡住一批人,hhh

                          • 冰封心
                            冰封心 1

                            我之前也玩过类似题,卡了好久。

                              • 夜语青灯
                                夜语青灯 0

                                @ 冰封心 是啊,我也卡在构造payload那里,格式老错。

                              • 祝融燃火
                                祝融燃火 0

                                太带感了,爽到飞起!😂

                                • 机敏的貂
                                  机敏的貂 0

                                  围观一下,这波操作挺炫。

                                    • Tata
                                      Tata 0

                                      @ 机敏的貂 手写O:4:”Read”那段我也调试了好久,格式错一点都不行。

                                    • 霓虹追猎者
                                      霓虹追猎者 0

                                      还有个小技巧:把class对象序列化后塞进pass,直接拿到flag。

                                      • 孤刃
                                        孤刃 0

                                        file只能在admin时include,随便改参数根本不中。

                                        • 憨憨大萝卜
                                          憨憨大萝卜 0

                                          我之前在CTF里也遇到过类似的反序列化坑,调试时卡在payload格式上,最后靠手写O:4:”Read”的序列化才突破,真是又爱又恨。

                                            • 永恒观测者
                                              永恒观测者 1

                                              @ 憨憨大萝卜 手写的payload格式真得小心,少个引号都白搭。

                                            • 糖果果
                                              糖果果 0

                                              反序列化拿flag这招真骚,学到了。

                                              • 黑夜占卜师
                                                黑夜占卜师 1

                                                看不懂,这代码太绕了。

                                                • 暖冬小炉
                                                  暖冬小炉 0

                                                  payload那段O:4:”Read”看着就头大。

                                                  • 剑影无名
                                                    剑影无名 0

                                                    文件包含+反序列化,这结合挺妙啊。

                                                      • 扇面画
                                                        扇面画 0

                                                        @ 剑影无名 这种组合拳打出来,确实有点东西,不是纯堆漏洞。

                                                      • 长髯公
                                                        长髯公 0

                                                        之前做过类似的,那个file_get_contents读前端数据确实是个坑。

                                                        • 糖醋排骨香
                                                          糖醋排骨香 0

                                                          flag在f1a9.php里,直接包含读不到吗?

                                                            • 迷雾之城
                                                              迷雾之城 1

                                                              @ 糖醋排骨香 直接包含f1a9.php肯定被过滤了,估计做了内容检查。

                                                            • 长靠将军
                                                              长靠将军 0

                                                              这writeup写得挺细,适合我这种小白跟。

                                                              • 沉默布丁
                                                                沉默布丁 1

                                                                手写序列化字符串,记得格式要对,不然老报错。

                                                                • 锣鼓喧
                                                                  锣鼓喧 1

                                                                  class.php里的类没调用,怎么触发?

                                                                  • Starlit Canvas
                                                                    Starlit Canvas 0

                                                                    图片里的代码能再清晰点不,有点糊。

                                                                    • 钴蓝星空
                                                                      钴蓝星空 0

                                                                      file_get_contents读前端数据,这设计也太怪了吧。

                                                                      • 孔雀展艳
                                                                        孔雀展艳 1

                                                                        之前拿这题练手,卡在反序列化入口那里半天。

                                                                        • 彩色粉笔画家
                                                                          彩色粉笔画家 0

                                                                          有没有更简单的绕过方法啊?

                                                                            • InfinitySpark
                                                                              InfinitySpark 0

                                                                              @ 彩色粉笔画家 反序列化触发条件能不能再解释下?

                                                                            • ZenithStar
                                                                              ZenithStar 0

                                                                              O:4:”Read”这格式,新手一看就懵。

                                                                              • 绯红之瞳
                                                                                绯红之瞳 0

                                                                                反序列化那块儿能不能再讲细点?

                                                                                • 星云漂流
                                                                                  星云漂流 1

                                                                                  这题出得确实有意思,各种漏洞揉一块儿了。

                                                                                  • 河马小胖
                                                                                    河马小胖 0

                                                                                    图片里代码能不能给个高亮版本?看着费眼。

                                                                                      • 熵增旅人
                                                                                        熵增旅人 1

                                                                                        @ 河马小胖 图片确实有点模糊,代码高亮会好很多。

                                                                                      • 清风小站
                                                                                        清风小站 0

                                                                                        直接包含f1a9.php为啥不行,非得绕一圈?

                                                                                        • 月眠
                                                                                          月眠 1

                                                                                          flag最后长啥样,好奇。

                                                                                          • 墨画浮生
                                                                                            墨画浮生 1

                                                                                            我去,这题我交了八次才过,心态炸了。

                                                                                            • 水袖飘
                                                                                              水袖飘 0

                                                                                              感觉还行,就是payload太容易写错了。

                                                                                              • 暗夜漫游
                                                                                                暗夜漫游 0

                                                                                                file_get_contents读GET数据,这操作真的骚。

                                                                                                • 孤独的旋律
                                                                                                  孤独的旋律 0

                                                                                                  之前搞代码审计时也碰上这种伪装include的,坑惨了。

                                                                                                  • 星之海
                                                                                                    星之海 0

                                                                                                    这题flag是随机生成的吧?看到好多人贴的不同。

                                                                                                      • 酒中狂
                                                                                                        酒中狂 0

                                                                                                        @ 星之海 flag真随机,我交了三次每次都不一样。

                                                                                                      • 豆奶海豚
                                                                                                        豆奶海豚 0

                                                                                                        看不懂反序列化咋触发的,有大佬画个流程图吗?

                                                                                                        • 星界旅者
                                                                                                          星界旅者 0

                                                                                                          手写O:4:”Read”那段,真的只能背下来吗?想不通逻辑。

                                                                                                          • 废土秃鹫
                                                                                                            废土秃鹫 1

                                                                                                            反序列化那块儿确实容易卡住,特别是payload格式。

                                                                                                            • 毒舌猫
                                                                                                              毒舌猫 0

                                                                                                              直接传admin就能包含class.php,这设计挺有意思。

                                                                                                              • 幽影迷宫
                                                                                                                幽影迷宫 0

                                                                                                                payload构造有没有现成工具能生成啊?

                                                                                                                  • 海岛鹰
                                                                                                                    海岛鹰 1

                                                                                                                    @ 幽影迷宫 PHPGGC直接生成,不过得改改参数。

                                                                                                                  • Bussin
                                                                                                                    Bussin 0

                                                                                                                    这种文件包含+反序列化的组合在CTF里还挺常见。

                                                                                                                    • 星星小船长
                                                                                                                      星星小船长 0

                                                                                                                      flag每次都是随机生成的吗?

                                                                                                                      • 玉华宫画师
                                                                                                                        玉华宫画师 1

                                                                                                                        class.php里的Read类怎么调用的还是没太懂。

                                                                                                                          • 无常鬼
                                                                                                                            无常鬼 0

                                                                                                                            @ 玉华宫画师 class.php里的类没主动调用,得靠反序列化自动触发。

                                                                                                                          • 磷火棋手
                                                                                                                            磷火棋手 1

                                                                                                                            这题难度适中,适合练手。

                                                                                                                            • Extra
                                                                                                                              Extra 1

                                                                                                                              payload构造有现成工具,比如PHPGGC这种。

                                                                                                                              • 叛逆小鲨
                                                                                                                                叛逆小鲨 0

                                                                                                                                反序列化触发条件还是有点绕,得结合文件包含一起看。

                                                                                                                                  • 肥肥仓鼠
                                                                                                                                    肥肥仓鼠 0

                                                                                                                                    @ 叛逆小鲨 O:4:”Read”这段手写太折磨了,有没有生成器啊?

                                                                                                                                    • 小绒球
                                                                                                                                      小绒球 0

                                                                                                                                      @ 叛逆小鲨 围观,坐等大佬们贴flag格式长什么样。🤔

                                                                                                                                      • 落日行歌
                                                                                                                                        落日行歌 0

                                                                                                                                        @ 叛逆小鲨 class.php没调用能触发,不就是因为反序列化自动调用了?

                                                                                                                                      • 区块链骑士
                                                                                                                                        区块链骑士 0

                                                                                                                                        手写序列化字符串确实容易出错,特别是引号和长度。

                                                                                                                                        • 暗影织者
                                                                                                                                          暗影织者 0

                                                                                                                                          file_get_contents读前端数据,这漏洞挺隐蔽的。

                                                                                                                                          • 星空传媒
                                                                                                                                            星空传媒 0

                                                                                                                                            这题适合拿来练手,套路挺经典的。

                                                                                                                                            • 翠影
                                                                                                                                              翠影 0

                                                                                                                                              有没有更简单的payload写法?

                                                                                                                                              • 幻象捕手
                                                                                                                                                幻象捕手 1

                                                                                                                                                flag最后是啥样的?贴出来看看呗。

                                                                                                                                                • 月光独角鲸
                                                                                                                                                  月光独角鲸 0

                                                                                                                                                  代码审计部分能再展开说说吗?

                                                                                                                                                  • 暗月骑士
                                                                                                                                                    暗月骑士 1

                                                                                                                                                    围观技术大佬炫技。🤔

                                                                                                                                                    • 果冻小甜筒
                                                                                                                                                      果冻小甜筒 0

                                                                                                                                                      file_get_contents读输入,这脑洞谁想的?

                                                                                                                                                      • 白鹭洲头
                                                                                                                                                        白鹭洲头 1

                                                                                                                                                        反序列化入口卡了我半小时,服了。

                                                                                                                                                        • 独享黑夜
                                                                                                                                                          独享黑夜 0

                                                                                                                                                          这题和之前打的某ctf一模一样套路。

                                                                                                                                                          • 火镰
                                                                                                                                                            火镰 1

                                                                                                                                                            O:4:”Read”格式背了三天才记住。

                                                                                                                                                            • Star小宇宙
                                                                                                                                                              Star小宇宙 0

                                                                                                                                                              看不懂为啥不能直接包含flag文件。

                                                                                                                                                              • 石髓凝
                                                                                                                                                                石髓凝 0

                                                                                                                                                                太费劲了,payload写错一个字符全崩。

                                                                                                                                                                • CosmosVeil
                                                                                                                                                                  CosmosVeil 0

                                                                                                                                                                  直接贴flag呗,别卖关子了。

                                                                                                                                                                  • 机械魂
                                                                                                                                                                    机械魂 1

                                                                                                                                                                    flag最后是ctf{xxx}格式吗?

                                                                                                                                                                    • 撒娇的糯米
                                                                                                                                                                      撒娇的糯米 1

                                                                                                                                                                      之前搞审计也遇到这种伪装包含,坑。

                                                                                                                                                                      • 烛照光
                                                                                                                                                                        烛照光 0

                                                                                                                                                                        class.php明明没调用,咋触发的?

                                                                                                                                                                        • 幽光之瞳
                                                                                                                                                                          幽光之瞳 0

                                                                                                                                                                          围观,这操作太秀了。🤔

                                                                                                                                                                          • 社恐小兔
                                                                                                                                                                            社恐小兔 1

                                                                                                                                                                            payload能简化不,手写太痛苦。

                                                                                                                                                                            • 霜之瞳
                                                                                                                                                                              霜之瞳 0

                                                                                                                                                                              这题比上周那个简单多了。

                                                                                                                                                                              • 孤烟
                                                                                                                                                                                孤烟 1

                                                                                                                                                                                file参数被限制死了,改不了。

                                                                                                                                                                                • 铁杵成针
                                                                                                                                                                                  铁杵成针 1

                                                                                                                                                                                  代码高亮版有没有,看得眼睛疼。

                                                                                                                                                                                  • 阴阳鬼差
                                                                                                                                                                                    阴阳鬼差 0

                                                                                                                                                                                    反序列化那段流程图求出一份。

                                                                                                                                                                                    • 山楂糖葫芦
                                                                                                                                                                                      山楂糖葫芦 0

                                                                                                                                                                                      这题最坑的就是payload格式,错一位直接GG。

                                                                                                                                                                                      • 平遥古韵
                                                                                                                                                                                        平遥古韵 0

                                                                                                                                                                                        file_get_contents读前端数据,真的离谱,谁这么设计的?

                                                                                                                                                                                        • 散步的蜗牛
                                                                                                                                                                                          散步的蜗牛 0

                                                                                                                                                                                          flag格式不都是ctf{xxx}嘛,还能整出花?

                                                                                                                                                                                          • 嚣张的咸鱼
                                                                                                                                                                                            嚣张的咸鱼 0

                                                                                                                                                                                            我之前也搞过类似题,文件包含+反序列化,真是一环套一环。

                                                                                                                                                                                            • 晶晶
                                                                                                                                                                                              晶晶 1

                                                                                                                                                                                              直接包含f1a9.php不行,估计做了过滤或者条件限制。

                                                                                                                                                                                              • RuneboundWarden
                                                                                                                                                                                                RuneboundWarden 1

                                                                                                                                                                                                payload构造那里卡了好久,总算过了

                                                                                                                                                                                                  • Rustling Leaves
                                                                                                                                                                                                    Rustling Leaves 1

                                                                                                                                                                                                    @ RuneboundWarden 我也卡过,后来发现是格式问题

                                                                                                                                                                                                  • 软糖芯
                                                                                                                                                                                                    软糖芯 0

                                                                                                                                                                                                    代码审计这块儿要是能画个流程图就好了,太绕了。

                                                                                                                                                                                                    • 糖豆小狗
                                                                                                                                                                                                      糖豆小狗 1

                                                                                                                                                                                                      瓜皮,这题我调试了两个小时,就为一个引号。

                                                                                                                                                                                                      • 星露子
                                                                                                                                                                                                        星露子 1

                                                                                                                                                                                                        这题writeup讲得算细了,比我之前看的强多了。

                                                                                                                                                                                                        • 流光漫游者
                                                                                                                                                                                                          流光漫游者 0

                                                                                                                                                                                                          太费劲了,搞了整整一天,总算过了,泪目。

                                                                                                                                                                                                        匿名

                                                                                                                                                                                                        发表评论

                                                                                                                                                                                                        匿名网友

                                                                                                                                                                                                        拖动滑块以完成验证