1.AMP
Apache MySQL php
Windows amp环境
phpstudy
phpadmin
Linux amp环境
docker
docker常用命令
-p 8080:80 访问虚拟机的8080端口,就会访问docker的80端口
web工具使用
BP
hackbar
F12之后,找到hackbar
sqlmap
kali有
Windows下python sqlmap.py -u url
dir_search
菜刀,蚁剑
初次安装 需要初始化,选择工作目录,init
php的弱类型特性
0e开头后面是纯数字的字符串,会被当做科学计数法去比较,和0相等
0x开头后面是纯数字的字符串,会被当做16进制数去比较
当比较的一方是字符串时,会先把其转换为数字,不能转换为数字的字符串或null,被转换成0
==和===
是不一样的,后者是强类型的比较
MD5的参数有两个,str,raw_output(设置为TRUE,MD5报文摘要将以16字节长度的原始二进制格式返回)
第一个参数不为str,警告但不退出,返回null
<?php
highlight_file(__FILE__);
include('flag3.php');
if(isset($_POST['a'])){
$temp = json_decode($_POST['a']);
if($temp->key == $flag){
echo $flag;
}else{
die('ERROR!');
}
}
json_decode这个函数,该函数接受一个 JSON 编码的字符串并且把它转换为 PHP 变量,
json 是一种轻量级的数据交换格式,例如{“a”: 1, “b”: [1, 2, 3]} 就是一个标准的json格式
得到flag的方法是使我们传入的json数据中key键对应的值和代码中的变量flag相同,
再次观察代码,可以看到在第七行的比较中使用的仍然是“==”来做判断,这时不难联想到前面讲的弱类型导致的问题。
我们可以知道的是,变量flag的值一定为“flag{XXXXXX}”,它是一个字符串,在前面举过这样一个例子 “app”== 0 #true 同理,“flag{xxx}”==0 同样会返回true
那么我们完全可以有如下思路: 使json数据中的key值为0,当进行第7行的比较时,自然的“flag{xxx}”==0会返回true,if语句里的条件得到满足,我们就可以拿到flag,
网络协议
http协议
URL
?在URL中一般代表GET请求
报文
请求方式
请求
请求头和正文之间有一个空行,表示请求头已经结束
常见的请求头
伪造请求头
FTP
SSH服务
中间人攻击
信息泄露
git
git的使用
git信息泄露
用dirsearch扫描
DS_Store
文件包含
uploads-labs
https://github.com/c0ny1/upload-labs
docker安装教程
https://mp.weixin.qq.com/s/MeeX9nmUWB9WcsuCUXZnuw
B站视频教程:【kali安装docker玩转vulhub靶场】 https://www.bilibili.com/video/BV1qY4y1k7bs/?share_source=copy_web&vd_source=fa715c38d98cfad5eca2b2a583b8101e
docker常用命令
https://mp.weixin.qq.com/s/ZANKKBUFcijLgCuyCTolwg
靶场集成环境vulhub
https://github.com/vulhub/vulhub
如果没有使用docker,如何复现漏洞环境?
在线网站 vulfocus.cn 中集成了大量漏洞环境,可搜索环境名中的关键词,例如
webshell管理工具
中国蚁剑
蚁剑有两个模块,使用加载器选中源码所在的目录才能正常使用,视频里会教
源码下载:https://github.com/AntSwordProject/antSword
加载器下载:https://github.com/AntSwordProject/AntSword-Loader
冰蝎4.0版本
课上所用为3.0版本与4.0版本差别非常大,可自行探索4.0用法,B站有教程
https://github.com/rebeyond/Behinder
教程:【冰蝎4.0.1 Behinder_v4.0.1基本使用】 https://www.bilibili.com/video/BV1tt4y1V7zJ/?share_source=copy_web&vd_source=fa715c38d98cfad5eca2b2a583b8101e
哥斯拉
https://github.com/BeichenDream/Godzilla
原理
- hackbar里面有LFI模块,用于自动生成文件包含的东西
服务器执行php文件时,可以通过文件包含函数加载另一个文件中的php代码,并且当php脚本来执行,文件包含类似于C语言中的include函数
文件包含漏洞重要点之一就被包含的文件尽管后缀php不识别,依旧可以去执行其内容
本地文件包含漏洞
session文件
日志文件
phpadmin
绕过防御
远程文件包含漏洞
绕过防御
PHP支持的伪协议
file:// — 访问本地文件系统
http:// — 访问 HTTP(s) 网址
ftp:// — 访问 FTP(s) URLs
php:// — 访问各个输入/输出流(I/O streams)
zlib:// — 压缩流
data:// — 数据(RFC 2397)
glob:// — 查找匹配的文件路径模式
phar:// — PHP 归档——压缩
ssh2:// — Secure Shell 2
rar:// — RAR
ogg:// — 音频流
expect:// — 处理交互式的流
php:// 伪协议
php:// 访问各个输入/输出流(I/O streams),在CTF中经常使用的是php://filter和php://input,php://filter用于读取源码,php://input用于执行php代码。
data:// 伪协议
data:资源类型;编码,内容 数据流封装器 当allow_url_include 打开的时候,任意文件包含就会成为任意命令执行
伪协议与文件包含
PHP session文件的常见存储路径
/var/lib/php/sess_PHPSESSID
/var/lib/php/sessions/sess_PHPSESSID
/tmp/sess_PHPSESSID
/tmp/sessions/sess_PHPSESSID