夏令营集训2--web安全

Web题目分类:

1.源码获取,扫描,弱密码爆破,js绕过

2.Php代码审计,弱类型比较

3.文件上传,文件包含

4.序列化与反序列化

5.Sql注入

6.Xss跨站脚本攻击

Web的基础知识

1.了解HTTP协议:
HTTP是超文本传输协议,其定义了客户端与服务器端之间文本传输的规范。HTTP默认使用80端口。
1.请求方式:

夏令营集训2--web安全_第1张图片
客户端request请求消息内容:

大致由请求行(request line)、请求头部(header)、空行和请求数据四个部分组成。

夏令营集训2--web安全_第2张图片

HTTP请求消息Response:

一般情况下,服务器接收并处理客户端发过来的请求后会返回一个HTTP的响应消息。
HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文

Robots协议:

也称为爬虫协议、机器人协议等)的全称是“网络爬虫排除标准”(Robots Exclusion Protocol),网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取。
在网站根目录下放一个robots.txt文本文件,有时候它会声明此网站不可以被git。

实战:攻防世界:robots

在这里插入图片描述打开题目:什么都没有?

夏令营集训2--web安全_第3张图片查看源代码,说的信息也没有用,不过这道题是关于robots协议的,因此
夏令营集训2--web安全_第4张图片
我们直接查看网站根目录下的robots.txt文件;

夏令营集训2--web安全_第5张图片
得到一个flag的隐藏文件,接着继续访问flag文件;得到flag:

夏令营集训2--web安全_第6张图片
我觉得这道题的解法主要是想到robots协议要想到它在网站根目录下的文件。

Cookie:
Cookie 可以翻译为“小甜品,小饼干” , Cookie就是服务器暂存房子啊你的电脑里的资料(.txt文件),通过在Http传输中的状态好让服务器用来辨认你的计算机。当你在浏览器网站的时候,Web服务器送一小小资料放在你的计算机上,Cookie会帮你在网站上所打的文字或是一些选择都记录下来。
当下次你再访问同一个网站,Web服务器会先看看有没有它上次访问Cookie资料,有的话,就会依据Cookie里的内容来判断使用者,送出特定的网页内容给你。
属性值:

一个Cookie包含以下信息:
1)Cookie名称,Cookie名称必须使用只能用在URL中的字符,一般用字母及数字,不能包含特殊字符,如有特殊字符想要转码。如js操作cookie的时候可以使用escape()对名称转码。
2)Cookie值,Cookie值同理Cookie的名称,可以进行转码和加密。
3)Expires,过期日期,一个GMT格式的时间,当过了这个日期之后,浏览器就会将这个Cookie删除掉,当不设置这个的时候,Cookie在浏览器关闭后消失。
4)Path,一个路径,在这个路径下面的页面才可以访问该Cookie,一般设为“/”,以表示同一个站点的所有页面都可以访问这个Cookie。
5)Domain,子域,指定在该子域下才可以访问Cookie,例如要让Cookie在a.test.com下可以访问,但在b.test.com下不能访问,则可将domain设置成a.test.com。
6)Secure,安全性,指定Cookie是否只能通过https协议访问,一般的Cookie使用HTTP协议既可访问,如果设置了Secure(没有值),则只有当使用https协议连接时cookie才可以被页面访问。
7)HttpOnly,如果在Cookie中设置了"HttpOnly"属性,那么通过程序(JS脚本、Applet等)将无法读取到Cookie信息。

实战:攻防世界:cookie

夏令营集训2--web安全_第7张图片

这道题关于cookie文件题;题目提示了信息!打开题目发现没有啥有用信息

夏令营集训2--web安全_第8张图片
接下来用burpsuite抓包看看是否有信息:

夏令营集训2--web安全_第9张图片

发现数据包含cookie文件,即在浏览器再打开,然后在抓包看看cookie文件里面是否含有flag:

夏令营集训2--web安全_第10张图片
夏令营集训2--web安全_第11张图片
即出现flag。

Session(对象):

服务器可以为每个用户浏览器创建一个会话对象(session对象),注意:一个浏览器独占一个session对象(默认情况下)。因此,在需要保存用户数据时,服务器程序可以把用户数据写到用户浏览器独占的session中,当用户使用浏览器访问其它程序时,其它程序可以从用户的session中取出该用户的数据为用户服务。

Session用于保存每个用户的专用信息,每个客户端用户访问时,服务器都为每个用户分配一个唯一的会话ID(Session ID) . 她的生存期是用户持续请求时间再加上一段时间(一般是20分钟左右)。

第二章源码获取,扫描,弱密码爆破

1.源码获取,git
由于现在当前大量开发人员使用git进行版本控制,对站点自动部署。
如果配置不当,可能会将.git文件夹直接部署到线上环境。这就引起了git泄露漏洞。GitHack是一个.git泄露利用脚本,通过泄露的.git文件夹下的文件,还原重建工程源代码。Git信息泄露的危害很大,渗透测试人员、攻击者,可直接从源码获取敏感配置信息(如:邮箱,数据库),也可以进一步审计代码,挖掘文件传、SQL注射等安全漏洞。命令: python2 GitHack.py -u http://www.hoolai.com/.git/

2.扫描
有些网站的隐藏的文件,
页面并不是能够发现,所以需要我们利用一些扫描工具进行扫描,得到隐藏的页面,得到关键的信息。
常用的扫描软件:御剑,dirserach御剑在window下运用,而dirsearch需要在linux下进行扫描。
Dirsearch扫描命令格式:./dirsearch –u 目标网址 –e例如:./dirsearch –u htttps://www.baidu.com –e

3.弱密码爆破:
在有些网站的登陆界面中,我们希望拿到它的管理员权限,但是我们并不知它的密码,但是知道的是它的密码的类型并不复杂,我们可以对密码进行弱密码爆破。
原理:穷举爆破
工具:burpsuit
成功与否:密码本是否强大,掌握的信息是否足够。

实战:攻防世界:weak_auth
夏令营集训2--web安全_第12张图片
根据题意,应该是让我们找出密码:

夏令营集训2--web安全_第13张图片
找密码我们直接用burpsuite抓包然后进行爆破,一般密码为六位数的数字

夏令营集训2--web安全_第14张图片

第三节:php代码审计

这部分内容,是以后漏洞挖掘的基础,学习PHP的各种函数以及漏洞,绕过函数的检验,得到flag。
需要资料:php中文手册

1.Extract变量覆盖:

2.Php弱类型比较:

3.二次url编码绕过:

4.哈希绕过:

5.正则绕过:

1.Extract变量覆盖:

int extract( array &$array[, int $flags = EXTR_OVERWRITE[, string $prefix = NULL]] )

本函数用来将变量从数组中导入到当前的符号表中。

检查每个键名看是否可以作为一个合法的变量名,同时也检查和符号表中已有的变量名的冲突。它有4个参数,默认会将变量覆盖。
当这个变量是用get方式从用户的输入获取时,就会出现变量覆盖的漏洞。
例如:题目:bugKuctf extract变量覆盖:

2.Php弱类型比较

php中有两种比较的符号 == 与 ===

  1. === 在进行比较的时候,会先判断两种字符串的类型是否相等,再比较
  2. == 在进行比较的时候,加粗样式会先将字符串类型转化成相同,再比较
    漏洞形成:
    当进行比较时,不小心或者不注意用了==这种没有控制变量类型的比较时,会运用其他的相等,导致绕过比较函数,得到内容。

题目:攻防世界 simple_php:

3.二次url编码绕过:
URL编码只是简单的在特殊字符传输时各个字节前加上%,对应的url编码,我们可以看url编码表
https://baike.baidu.com/item/URL编码/3703727?fr=aladdin

进行url编码的原因:
https://www.cnblogs.com/jerrysion/p/5522673.html

在服务器接受我们的url请求时,会自动的对我们传输的url进行url decode(解码),所以在某些题目我们需要进行的是对有些字符进行url的二次编码

例如:bugkuctf:urldecode 二次编码绕过:

4.哈希绕过

哈希指的是一系列的加密函数,例如:MD5加密,sha-1等等,他们有共同的特点儿:
1.不可逆
2.输出值固定
3.抗强碰撞:也就是无法找到两个数具有同一个加密结果
绕过方法:1.哈希无法对数组加密,会返回false
2.哈希函数如果是加密后为0e,在弱类型比较时,php会认为两个值是相等的。
题目:南邮ctf: md5 collision:

5.正则匹配绕过:

正则匹配:匹配的是字串和目标串的匹配关系,运用匹配,可是实现对目标串的有目的的筛选。
Php中的函数:
Eregi:不区分大小写的正则表达式匹配
Ereg:区分大小写的正则表达式匹配
特殊符号的匹配:

夏令营集训2--web安全_第15张图片
夏令营集训2--web安全_第16张图片

第四节:文件上传,文件包含

题目类型:

1.本地js检验

2.黑名单检验

3.白名单

4.内容检验

5.竞争上传

1.本地js校验:
有少量的题目在进行上传校验时,是以弹窗的形式出现报错的,那么它极有可能进行的是本地的js的校验,绕过方法之一是将它的本地的js给关闭了,不让它进行检验,那么就有可能成功上传。
禁止本地js的火狐插件:

在这里插入图片描述

2.黑名单检验:
在文件上传时,检验的方式很有可能是对某些文件类型进行了限制,例如不允许上传的类型有
Php,asp,jsp,txt,xml等等,但是,这种黑名单的检验往往是最薄弱的,总有你想象不到的文件类型在上传,而且被正确的解析。

绕过:总有一些文件名称是可以上传的,例如PHP版本众多,可以尝试php5,php6,php7,phps,等等。

3.白名单:
大多数的上传的检验方式一般都是白名单,也就是只允许某些文件类型的上传,例如只允许上传jpg文件。

绕过方法:1.最简单的方法是更改后缀名称,这并不会妨碍服务器对上传的php文件的解析,但是,一般这种只需要更改后缀名称的题目是不太可能的。

2.%00截断。适用于某些php的版本与情形,它存在00截断漏洞。也就是当服务器读取文件名称时,读取到0x00,它会默认为是文件名的终止,但实际上后面还有内容。
注意:这里的%00截断并不是直接对文件名称后直接加入%00,而是在它的十六进制展开后进行0x00截断

4.内容校验:

大多数时不仅仅是对文件的名称进行检验,而且对文件的内容也会进行检验,一旦发现不是图片的内容,就会显示报错,导致上传其他文件失败。
绕过的方法:在文件内容里面直接加入GIF89a,即可。
测试:

5.竞争上传:

有些网站的上传机制是只要是不符合它的上传的类型的文件,服务器就会以一个极快的速度将它删除,但是有一个本质的缺陷是确实是上传成功的,我们可以用一直上传的思路,一直飞快的上传,一边疯狂的请求,最终,总有几个来不及删除就会被我们访问到。
工具:burpsuit

文件包含

1.本地包含

2.远程文件包含

相关函数:
Include()
Include_once()
require()
Rquire_once()

夏令营集训2--web安全_第17张图片
夏令营集训2--web安全_第18张图片

你可能感兴趣的:(夏令营集训2--web安全)