zoukankan      html  css  js  c++  java
  • 刷题 [网鼎杯 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注入
    • 反序列化漏洞
  • 相关阅读:
    Using Resource File on DotNet
    C++/CLI VS CSharp
    JIT VS NGen
    [Tip: disable vc intellisense]VS2008 VC Intelisense issue
    UVa 10891 Game of Sum(经典博弈区间DP)
    UVa 10723 Cyborg Genes(LCS变种)
    UVa 607 Scheduling Lectures(简单DP)
    UVa 10401 Injured Queen Problem(简单DP)
    UVa 10313 Pay the Price(类似数字分解DP)
    UVa 10635 Prince and Princess(LCS N*logN)
  • 原文地址:https://www.cnblogs.com/karsa/p/12652311.html
Copyright © 2011-2022 走看看