文章目录
一,HTML学习
1,HTML格式
<!DOCTYPE HTML>
<html>
<body>
<h1>标题</h1>
</body>
</html>
2,HTML标签
标题通过<h1>-<h6>
等标签进行定义。
段落通过<p>
标签进行定义。
链接通过<a>
标签进行定义。
图像通过<img>
标签进行定义。
下划线通过<u>
标签进行定义。
3,表单元素<input>
根据不同的 type 属性<input>
元素有很多形态。
其中<input type="text">
定义用于文本输入的单行输入字段。
<form>
First name:<input type="text" name="firstname">
<br>
Last name:<input type="text" name="lastname">
</form>
4,利用Visual Studio Code输出登陆框
二,PHP学习
1,利用phpstudy创建站点
2,学习PHP基础
PHP 脚本以 <?php 开头,以 ?> 结尾。
PHP 文件可以包含 HTML 标签以及一些 PHP 脚本代码。
PHP 语句以分号结尾 ; 。
PHP中 echo 能够输出一个以上的字符串。
3,利用Visual Studio Code编写PHP文件
三,markdown学习
1,标题以#数量分为6级
2,引用使用>
示例
3,列表
1 有序列表
2 使用1234
- 无序列表
- 使用-或*
- 任务列表
- 使用- [ ]和- [x]
4,代码块使用```+语言
行内代码使用``
5,字体
**表示斜体
****表示加粗
下划线使用<u>
标签
高亮使用== ==
四,VMware和kali安装
1,安装VMware
2,导入kali
3,设置语言
五,Burp安装
1,使用加载器安装Burp
2,编写vbs启动程序
3,启动Burp
六,Burp抓取
1,抓取百度
2,丢包
3,发包
get为请求方法 http为协议 1.1为协议版本 200表示成功
host是服务器
cookie是客户端保存的信息
cache-control是通用消息头字段
sec-ch-ca是低熵提示
upgrade-insecure-requests:1表示正确理解服务器信息且之后使用https而非http
user-agent是用户代理
accept表示请求服务器返回的数据类型
sec-fetch是网络请求的元数据描述
accept-encoding表示http响应是否压缩
acceot-language表示浏览器支持的语言
connection标识请求是长连接还是短链接
七,常见的cmd命令
dir 查看当前目录
cd [路径] 到达当前盘符下的路径
cd \ 返回根目录
cd … 返回上级目录
cd /d [盘符:][路径] 切换盘符,当前路径改变为目标路径
tree [盘符:][路径] 用树形结构展示路径下的文件
md(mkdir) [盘符:][文件夹] 创建文件夹
rd(rmdir) [盘符:][文件夹] 删除文件夹
echo data > a.txt 输入data给a.txt并创建a.txt
copy [文件] [目标位置] 把源文件或文件复制到目标位置
move [文件] [目标位置] 把源文件或文件剪切到目标位置
erase(del) name 删除文件
shutdown -s -t 60 60s后关机
shutdown -r 重启
shutdown -a 取消关机
exit 退出
help + [指令名称] 可获取帮助 例如 “help shutdown”
cls(clear) 清屏
color 可更改cmd的背景色和字体颜色
netstat -ano | findstr 8080 查找8080端口的进程
taskkill /F /PID 1234 结束进程1234
八,靶场部署
sql
Upload
九,Mysql增删改查
- 增Insert
基本语法 insert into 表名(列1,列2,列3,列4,…) values(值,值,值)
insert into 表名 set 列=值,列=值,列=值,… - 删delete
基本语法 delete from 表名 where 列=值
#DELETE from 表名 一行行删除整张表
#TRUNCATE table 表名 就是清空表 - 改update
基本语法 update 表名 set 列=值,列=值,… where… - 查select
select*
from student(查询student表中所有列)
*
代表代表所有列,要查询哪一列就把*
改成哪一列,可以查询一列,也可以查询多列,多列用逗号隔开
from后面跟的是表名
查询的结果包含列名和每一列的数据
十,文件上传漏洞
位置:相册、头像上传 视频、照片分享 附件上传(论坛发帖、邮箱) 文件管理器
前端校验
1、检测原理
- 如果浏览器页面没有刷新、或打开burp抓包没有抓到包、或者通过查看前端HTML代码等方式验证证明前端JS验证。
2、绕过方法>
- 通过删除其HTML代码对应的JS代码即可
服务端–MIME类型检测绕过
1、检测原理
- 当用户上传文件到服务器端的时候,服务器端的程序会获取上传文件的MIME类型,然后用这个获取到的类型来和期望的MIME类型进行匹配,如果匹配不上则说明上传的文件不合法。
服务端检测MIME类型的代码如下:2、什么是MIME
3、绕过方法
- 因为服务端检测的是文件的MIME类型,而对这个MIME类型的值的获取是通过HTTP请求字段里的Content-Type字段,所以绕过的方法就是通过修改Content-Type的值,比如修改为image/jpeg;image/png;image/gif等等允许上传类型对应的MIME值;
服务端–黑名单绕过
1、检测原理
- 服务器程序根据一份文件后缀名名单来判断是否允许当前文件上传到服务器,只要上传的文件的类型能够和黑名单里面的类型匹配,那么就禁止该文件上传
2、绕过方法
① 文件名大小写绕过 用像AsP、PhP之类的文件名绕过黑名单检测
② 名单列表绕过 用黑名单里没有的名单进行攻击,比如黑名单里没有asa或cer之类
③ 特殊文件名绕过 比如发送的http包里把文件名改成test.asp.或test.asp_(下划线为空格),这种命名方式在Windows系统里是不被允许的,所以需要在burp之类里进行修改,然后绕过验证后,会被Windows系统自动去掉后面的点和空格,但是主要Unix/Linux系统没有这个特性。服务端–.htaccess绕过
1、检测原理
- 黑名单里拒绝了几乎所有有问题的后缀名,除了.htaccess;
2、绕过方法
- 前提条件httpd.conf的两个开关设置要求:(1.mod_rewrite模块开启。2.AllowOverride> All)
先上传一个.htaccess文件(该目录的所有文件可以php文件执行),内容如下: SetHandler application/x-httpd-php
然后再上传一句话木马(后缀名修改为jpg)
服务端–大小写绕过
1、检测原理
- 后端过滤函数中不包括,
$file_ext = strtolower($life_ext);
转换为小写 且所有后缀名过滤都过滤2、绕过方法
- 修改后缀名为大写
服务端–空格绕过
1、检测原理
- 后端过滤函数中不包含,
$file_ext = trim($file_ext);
首尾去空 且所有后缀名过滤都过滤2、绕过方法
*修改后缀名增加空格
服务端–点绕过
1、检测原理
- 后端过滤函数中不包括,
$file_name = deldot($file_name);
删除文件名末尾的点且所有后缀名过滤都过滤,利用Windows特性,会自动去掉后缀名中最后的“ . ”,可在后缀名中加“ . ”绕过。2、绕过方法
- 修改后缀名中增加 . 号
服务端-- ::$DATA绕过
1、检测原理
- 后端过滤函数中不包括,
$file_ext = str_ireplace('::$DATA', '',$file_ext);
去除字符串::$DATA
,后端没有对后缀名中的::$DATA
进行过滤,在php+windows的情况下,如果文件名+::$DATA
会把::$DATA
之后的数据当成文件流处理,不会检测后缀名.且保持"::$DATA"之前的文件2、绕过方法
- 利用Windows特性,可在后缀名中加“::$DATA”绕过
服务端–点+空格+点绕过
1、检测原理
- 保存文件的时候没有重命名而使用原始的文件名,导致可以利用1.php. .(点+空格+点)来绕过,条件比较苛刻
2、绕过方法
- 修改后缀,利用 1.php. . (点+空格+点)来绕过
服务端–双写绕过
1、检测原理
- 后端处理函数中包含了 str_ireplace( d e n y e x t , “” , deny_ext,“”, denyext,“”,file_name);
2、绕过方法
- 把后缀名更改为pphphp
服务端–00截断
1、检测原理
后端采用白名单判断,但图片的路径是直接拼接出,
例如:$img_path=$_GET['save_path']."/".rand(10,99).date("YmdHis").".".$file_ext;
2、绕过方法
可以利用%00截断绕过(传入save_path参数时加上);但是有条件
截断条件:php版本小于5.3.4,php的magic_quotes_gpc为OFF状态
0x00是十六进制表示方法,是ascii码为0的字符,在有些函数处理时,会把这个字符当作结束符,而%00,是url对ascii编码再加%处理,url反编码后一样。
服务端–图片马绕过
1、检测原理
- 通过读写文件的前2个字节判断文件类型
2、绕过方法
- 上传图片马
getimagesize()-图片马
1、检测原理
- 通过getimagesizi获取图片文件的类型
2、绕过方法
- 上传图片马即可
exif_imagetype()-图片马
1、检测原理
- 获取图片中文件的类型
2、绕过方法
- 需要开启php的配置文件的php_exif模块,上传图片马
服务端–二次渲染绕过
1、检测原理
- 文件上传成功后,经过二次渲染,所谓二次渲染就是重新在生成一次图片,容易把图片马中的PHP代码修改掉。
2、绕过方法
- php代码不能放在最后,对于不同的图片,修改的位置还不一样。
服务端–条件竞争
1、检测原理
条件竞争,先将文件上传到服务器,然后判断文件后缀是否在白名单里,如果在则重命名,否则删除,因此可以上传1.php只需要在它删除之前访问即可,可以利用burp的intruder模块不断上传,然后我们不断的访问刷新该地址即可,目的就是在文件还存在时执行一段php代码,比如新建一个文件,写入一句话。
代码:
file_put_contents('webshell.php','<?php @eval($_POST[pass]); ?>');