• 刷题 [网鼎杯 2018]Fakebook


    解题思路

    首先登陆页面发现是这样的:

    查看源码

    源码很正常,也没有什么特别的

    web目录扫描

    我用的是dirmap工具扫描,扫描结果保存在一个txt文件中,结果可知没什么后台。

    robots.txt

    发现有/user.php.bak

    下载后

    审计源码

    直接是一个UserInfo类,三个属性,get函数中存在ssrf,且没有过滤。curl可用file协议,blog属性调用了get函数,所以这里使用file协议读取文件。file:///var/www/html/flag.php

    正常解题

    首先肯定要join,即注册一个用户

    提示注册成功。

    get注入

    注册后发现可以点击自己的username,点击之后,观察url可能存在get注入。sqlmap跑一下。sqlmap跑不出来,手动检测,是数字型注入。union select 发现有waf,用/**/即可绕过。union /**/ select.回显位置是第二位,往下注注注。

    数据库名:fakebook 表名:users 列名:data ,发现是序列化的数据,可知对我们注册的姓名,年龄,博客地址进行了序列化

    并且发现爆出路径:/var/www/html/

    反序列化

    可以利用的变量在构造函数中,反序列化对象会自动执行构造函数。所以我们编写脚本,将需要构造的ssrf放在blog属性中,让其在反序列化时被调用

    O:8:"UserInfo":3:{s:4:"name";s:1:"a";s:3:"age";i:0;s:4:"blog";s:29:"file:///var/www/html/flag.php";}

    因为blog在第四位,所以paylaod:

    ?no=-1/**/union/**/select/**/1,2,3,'O:8:"UserInfo":3:{s:4:"name";s:4:"test";s:3:"age";i:123;s:4:"blog";s:29:"file:///var/www/html/flag.php";}'

    注入后blog栏显示file:///var/www/html/flag.php,此时即代表注册成功。查看源码:

    iframe标签中读取了flag.php中的内容。flag即出现

    总结思路

    核心思路:

    • 通过注入发现data的数据是序列化的
    • 通过后台获取源码,代码审计存在可利用的ssrf点
    • 结合反序列化和ssrf,保证bypass可以被利用,读取flag.php中的flag

    知识点

    • ssrf
    • sql注入
    • 反序列化漏洞
  • 相关阅读:
    HTML基础02
    HTML基础01
    【springboot中的常用注解】
    【git常用命令】
    【spring使用@Async注解异步处理】
    【let definitions are not supported by current javascript】
    【sql update if else】
    【Tomcat运行时异常:Illegal access: this web application instance has been stopped already.】
    【JAVA float double数据类型保留2位小数点5种方法】
    【MyBatis中大于号以及小于号的表达方式】
  • 原文地址:https://www.cnblogs.com/karsa/p/12652311.html
Copyright © 2020-2023  润新知