1.4.1&1.4.2 merge request (#8)

* update 1.4.1

* update 1.4.1&1.4.2

* Update 1.4.2_http_basic.md

* 修改索引大小写

* Update 1.4.1_html_basic.md

* 修正格式

* Update 1.4.1_html_basic.md

* 修正格式

* 修正格式

* 修正格式

* Update 2.12_burpsuite.md
This commit is contained in:
phantom0301 2017-12-26 16:15:13 +08:00 committed by Firmy Yang
parent e90f8d1603
commit 94125ff6a8
5 changed files with 328 additions and 30 deletions

View File

@ -10,12 +10,12 @@ GitHub 地址https://github.com/firmianay/CTF-All-In-One
* [1.2 学习方法](doc/1.2_how_to_learn.md)
* [1.3 Linux 基础](doc/1.3_linux_basic.md)
* [1.4 Web 安全基础](doc/1.4_web_basic.md)
* [1.4.1 HTML基础](doc/1.4.1_html_basic.md)
* [1.4.2 HTTP协议基础](doc/1.4.2_http_basic.md)
* [1.4.3 JavaScript基础](doc/1.4.3_javascript_basic.md)
* [1.4.4 常见Web服务器基础](doc/1.4.4_webserver_basic.md)
* [1.4.5 OWASP Top Ten Project漏洞基础](doc/1.4.5_owasp_basic.md)
* [1.4.6 PHP源码审计基础](doc/1.4.6_php_basic.md)
* [1.4.1 HTML 基础](doc/1.4.1_html_basic.md)
* [1.4.2 HTTP 协议基础](doc/1.4.2_http_basic.md)
* [1.4.3 JavaScript 基础](doc/1.4.3_javascript_basic.md)
* [1.4.4 常见 Web 服务器基础](doc/1.4.4_webserver_basic.md)
* [1.4.5 OWASP Top Ten Project 漏洞基础](doc/1.4.5_owasp_basic.md)
* [1.4.6 PHP 源码审计基础](doc/1.4.6_php_basic.md)
* [1.5 逆向工程基础](doc/1.5_reverse_basic.md)
* [1.5.1 C 语言基础](doc/1.5.1_c_basic.md)
* [1.5.2 x86/x86-64 汇编基础](doc/1.5.2_x86&x64.md)

View File

@ -1 +1,113 @@
# 1.4.1 HTML基础
# 1.4.1 HTML 基础
- [什么是 HTML](#什么是-html)
- [HTML 中的标签与元素](#html-中的标签与元素)
- [HTML 编码](#html-编码)
- [HTML5 新特性](#html5-新特性)
## 什么是 HTML
HTML 是用来描述网页的一种语言。
- HTML 指的是超文本标记语言 (Hyper Text Markup Language)
- HTML 不是一种编程语言,而是一种标记语言 (Markup language)
- 标记语言是一套标记标签 (Markup tag)
- HTML 使用标记标签来描述网页
总的来说HTML 本身不具有编程逻辑,它是一种将格式与内容分离编排的语言。
用户在浏览器端解析的网页大都是由 HTML 语言组成。
由于是通过浏览器动态解析,因此可以使用普通文本编辑器来编写 HTML。
## HTML 中的标签与元素
标签和元素共同构成了 HTML 多样的格式和丰富的功能。
HTML 元素以开始标签起始,以结束标签终止。元素处于开始标签与结束标签之间,标签之间可以嵌套,一个典型的 HTML 文档如下:
```
<html>
<!-- html文档申明标签 -->
<body>
<!-- html文档主体 -->
Hello World
<!-- 注释 -->
</body>
</html>
```
#### 信息隐藏
HTML 中的部分标签用于元信息展示、注释等功能,并不用于内容的显示。另一方面,一些属性具有修改浏览器显示样式的功能,在 CTF 中常被用来进行信息隐藏。
```
标签
<!--...-->,定义注释
<!DOCTYPE>,定义文档类型
<head>,定义关于文档的信息
<meta>定义关于HTML文档的元信息
<iframe>,定义内联框架
属性
hidden隐藏元素
```
#### XSS
关于 XSS 漏洞的详细介绍见 1.4.5 节的 OWASP Top Ten Project 漏洞基础。导致 XSS 漏洞的原因是嵌入在 HTML 中的其它动态语言,但是 HTML 为恶意注入提供了输入口。
常见与 XSS 相关的标签或属性如下:
```
<script>
<img src=>,规定显示图像的 URL
<body background=>规定文档背景图像URL
<body onload=>body标签的事件属性
<input onfocus= autofocus>form表单的事件属性
<button onclick=>,击键的事件属性
<link href=>,定义外部资源链接
<object data=>,定义引用对象数据的 URL
<svg onload=>定义SVG资源引用
```
## HTML 编码
HTML 编码是一种用于表示问题字符已将其安全并入 HTML 文档的方案。HTML 定义了大量 HTML 实体来表示特殊的字符。
|HTML 编码|特殊字符|
|-------|-------|
| &quot | " |
| &apos | ' |
| &amp | & |
| &lt | < |
| &gt | > |
此外任何字符都可以使用它的十进制或十六进制的ASCII码进行HTML编码例如
|HTML 编码|特殊字符|
|-------|-------|
| &#34 | " |
| &#39 | ' |
| &#x22 | " |
| &#x27 | ' |
## HTML5 新特性
其实 HTML5 已经不新了,之所以还会在这里提到 HTML5是因为更强大的功能会带来更多意想不到的问题。
HTML5 的一些新特性:
- 新的语义元素标签
- 新的表单控件
- 强大的图像支持
- 强大的多媒体支持
- 强大的 API
## 参考资料
[W3C HTML 教程](http://www.w3school.com.cn/html/)
[HTML5 安全问题](http://html5sec.org/)

View File

@ -1 +1,191 @@
# 1.4.2 HTTP协议基础
# 1.4.2 HTTP 协议基础
- [什么是 HTTP](#什么是-http)
- [HTTP 请求与响应](#http-请求与响应)
- [HTTP 方法](#http-方法)
- [URL](#url)
- [HTTP 消息头](#http-消息头)
- [Cookie](#cookie)
- [状态码](#状态码)
- [HTTPS](#https)
## 什么是 HTTP
HTTP 是 Web 领域的核心通信协议。最初的 HTTP 支持基于文本的静态资源获取,随着协议版本的不断迭代,它已经支持如今常见的复杂分布式应用程序。
HTTP 使用一种基于消息的模型,建立于 TCP 层之上。由客户端发送一条请求消息,而后由服务器返回一条响应消息。
## HTTP 请求与响应
一次完整的请求或响应由消息头、一个空白行和消息主体构成。以下是一个典型的 HTTP 请求:
```
GET / HTTP/1.1
Host: www.github.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:52.0) Gecko/20100101 Firefox/52.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Upgrade-Insecure-Requests: 1
Cookie: logged_in=yes;
Connection: close
```
第一行分别是请求方法,请求的资源路径和使用的 HTTP 协议版本
第二至九行为消息头键值对
以下是对上面请求的回应(并不一定和真实访问相同,这里只是做为示例)
```
HTTP/1.1 200 OK
Date: Tue, 26 Dec 2017 02:28:53 GMT
Content-Type: text/html; charset=utf-8
Connection: close
Server: GitHub.com
Status: 200 OK
Cache-Control: no-cache
Vary: X-PJAX
X-UA-Compatible: IE=Edge,chrome=1
Set-Cookie: user_session=37Q; path=/;
X-Request-Id: e341
X-Runtime: 0.538664
Content-Security-Policy: default-src 'none';
Strict-Transport-Security: max-age=31536000; includeSubdomains; preload
Public-Key-Pins: max-age=0;
X-Content-Type-Options: nosniff
X-Frame-Options: deny
X-XSS-Protection: 1; mode=block
X-Runtime-rack: 0.547600
Vary: Accept-Encoding
X-GitHub-Request-Id: 7400
Content-Length: 128504
<!DOCTYPE html>
......
```
第一行为协议版本、状态号和对应状态的信息
第二至二十二为返回头键值对
紧接着为一个空行和返回的内容实体。
## HTTP 方法
在提到HTTP方法之前我们需要先讨论一下 HTTP 版本问题。HTTP 协议现在共有三个大版本,版本差异会导致一些潜在的漏洞利用方式。
|版本 |简述 |
|-------|-------|
|HTTP 0.9|该版本只允许 GET 方法,具有典型的无状态性,无协议头和状态码,支持纯文本|
|HTTP 1.0|增加了 HEAD 和 POST 方法,支持长连接、缓存和身份认证|
|HTTP 1.1|增加了 Keep-alive 机制和 PipeLining 流水线,新增了 OPTIONS、PUT、DELETE、TRACE、CONNECT 方法|
|HTTP 2.0|增加了多路复用、头部压缩、随时复位等功能|
|请求方法 |描述 |
|------- |------- |
|GET |请求获取 URL 资源 |
|POST |执行操作,请求 URL 资源后附加新的数据|
|HEAD |只获取资源响应消息报头|
|PUT |请求服务器存储一个资源|
|DELETE |请求服务器删除资源|
|TRACE |请求服务器回送收到的信息|
|OPTIONS |查询服务器的支持选项|
## URL
URL 是统一资源定位符,它代表了 Web 资源的唯一标识,如同电脑上的盘符路径。最常见的 URL 格式如下所示:
```
protocol://[user[:password]@]hostname[:post]/[path]/file[?param=value]
协议 分隔符 用户信息 域名 端口 路径 资源文件 参数键 参数值
```
下面是一张具体案例分析
![](../pic/1.4.2_http_url.png)
## HTTP 消息头
HTTP 支持许多不同的消息头,一些有着特殊作用,而另一些则特定出现在请求或者响应中。
|消息头 |描述 |备注 |
|------- |------- |-----------|
|Connection |告知通信另一端在完成HTTP传输后是关闭 TCP 连接,还是保持连接开放 | |
|Content-Encoding|规定消息主体内容的编码形式 | |
|Content-Length|规定消息主体的字节长度 | |
|Content-Type|规定消息主体的内容类型 | |
|Accept|告知服务器客户端愿意接受的内容类型 |请求 |
|Accept-Encoding|告知服务器客户端愿意接受的内容编码 |请求 |
|Authorization|进行内置 HTTP 身份验证 |请求 |
|Cookie |用于向服务器提交 cookie |请求 |
|Host |指定所请求的完整 URL 中的主机名称 |请求 |
|Oringin |跨域请求中的请求域 |请求 |
|Referer |指定提出当前请求的原始 URL |请求 |
|User-Agent |提供浏览器或者客户端软件的有关信息 |请求 |
|Cache-Control|向浏览器发送缓存指令 |响应 |
|Location |重定向响应 |响应 |
|Server |提供所使用的服务器软件信息 |响应 |
|Set-Cookie |向浏览器发布 cookie |响应 |
|WWW-Authenticate|提供服务器支持的验证信息 |响应 |
## Cookie
Cookie 是大多数 Web 应用程序所依赖的关键组成部分,它用来弥补 HTTP 的无状态记录的缺陷。服务器使用 Set-Cookie 发布 cookie浏览器获取 cookie 后每次请求会在 Cookie 字段中包含 cookie 值。
Cookie 是一组键值对,另外还包括以下信息:
- expires用于设定 cookie 的有效时间。
- domain用于指定 cookie 的有效域。
- path用于指定 cookie 的有效 URL 路径。
- secure指定仅在 HTTPS 中提交 cookie。
- HttpOnly指定无法通过客户端 JavaScript 直接访问 cookie。
## 状态码
状态码表明资源的请求结果状态,由三位十进制数组成,第一位代表基本的类别:
- 1xx提供信息
- 2xx请求成功提交
- 3xx客户端重定向其他资源
- 4xx请求包含错误
- 5xx服务端执行遇到错误
常见的状态码及短语如下所示:
|状态码|短语|描述|
|-----|----|----|
|100|Continue |服务端已收到请求并要求客户端继续发送主体|
|200|Ok |已成功提交,且响应主体中包含请求结果 |
|201|Created |PUT请求方法的返回状态请求成功提交 |
|301|Moved Permanently|请求永久重定向 |
|302|Found |暂时重定向 |
|304|Not Modified|指示浏览器使用缓存中的资源副本 |
|400|Bad Request|客户端提交请求无效 |
|401|Unauthorized|服务端要求身份验证 |
|403|Forbidden |禁止访问被请求资源 |
|404|Not Found |所请求的资源不存在 |
|405|Method Not Allowed|请求方法不支持 |
|413|Request Entity Too Large|请求主体过长 |
|414|Request URI Too Long|请求URL过长 |
|500|Internal Server Error|服务器执行请求时遇到错误 |
|503|Service Unavailable|Web服务器正常但请求无法被响应|
401 状态支持的 HTTP 身份认证
- Basic以 Base64 编码的方式发送证书
- NTLM一种质询-响应机制
- Digest一种质询-响应机制,随同证书一起使用一个随机的 MD5 校验和
## HTTPS
HTTPS 用来弥补 HTTP 明文传输的缺陷。通过使用安全套接字 SSL在端与端之间传输加密后的消息保护传输数据的隐密性和完整性并且原始的 HTTP 协议依然按照之前同样的方式运作,不需要改变。
## 参考资料
[URL](https://en.wikipedia.org/wiki/URL)
[HTTP 协议版本对比](https://www.cnblogs.com/andashu/p/6441271.html)
《黑客攻防技术宝典——Web 实战篇》

View File

@ -1,43 +1,39 @@
# 2.12 Burp Suite
- [Burp Suite 介绍](#BurpSuite介绍)
- [Burp Suite 介绍](#burpsuite-介绍)
- [安装](#安装)
- [快速入门](#快速入门)
- [参考资料](#参考资料)
## BurpSuite介绍
Burp Suite 是一款强大的Web渗透测试套件主要功能包括代理截获、网页爬虫、Web漏洞扫描、定制化爆破等结合Burp的插件系统还可以进行更加丰富多样的漏洞发掘。
可以从[官网](https://portswigger.net/burp)获取到社区版的Burp社区版的Burp有一些功能限制但是可以通过其他渠道获取到专业版。Burp使用Java语言编程可以跨平台运行。
## BurpSuite 介绍
Burp Suite 是一款强大的 Web 渗透测试套件主要功能包括代理截获、网页爬虫、Web 漏洞扫描、定制化爆破等,结合 Burp 的插件系统,还可以进行更加丰富多样的漏洞发掘。
可以从[官网](https://portswigger.net/burp)获取到社区版的 Burp社区版的 Burp 有一些功能限制但是可以通过其他渠道获取到专业版。Burp 使用 Java 语言编程,可以跨平台运行。
## 安装
在官网上选择适合自己版本的Burp官网提供多平台的安装包在保证系统拥有Java环境的基础上推荐直接下载Jar file文件。
在官网上选择适合自己版本的 Burp官网提供多平台的安装包在保证系统拥有 Java 环境的基础上,推荐直接下载 Jar file 文件。
下载完成后双击burpsuite_community_v1.x.xx.jar即可运行其他安装方式遵循相关指示安装即可。
下载完成后双击 burpsuite_community_v1.x.xx.jar 即可运行,其他安装方式遵循相关指示安装即可。
## 快速入门
#### proxy
Burp使用的第一步是实现浏览器到Burp的代理以Firefox为例
Burp 使用的第一步是实现浏览器到 Burp 的代理,以 Firefox 为例
选择 *选项* ——> *高级* ——> *网络* ——> *连接 设置* ——>配置代理到本机的未占用端口(默认使用8080端口)
选择 *选项* ——> *高级* ——> *网络* ——> *连接 设置* ——>配置代理到本机的未占用端口(默认使用 8080 端口)
在Burp的proxy下的options中查看代理监听是否开启默认监听 127.0.0.1:8080
Burp proxy 下的 options 中查看代理监听是否开启,默认监听 127.0.0.1:8080
在Firefox的代理状态下访问HTTP协议的网页即可在Burp中截获交互的报文
Firefox 的代理状态下,访问 HTTP 协议的网页即可在Burp中截获交互的报文
#### HTTPS下的proxy老版本Burp
#### HTTPS 下的 proxy老版本 Burp
新版 Burp1.7.30)已经不需要单独导入证书即可抓包,而老版 Burp Https 协议需要浏览器导入 Burp 证书才可正常抓包,具体操作见参考文档。
新版Burp1.7.30)已经不需要单独导入证书即可抓包
老版Burp Https协议需要浏览器导入Burp证书才可正常抓包具体操作见参考文档。
## 参考资料
[新手教程](http://www.freebuf.com/articles/web/100377.html)
[Kali中文网-Burp教程](http://www.kali.org.cn/forum-80-1.html)
[Burp测试插件推荐](https://www.waitalone.cn/burpsuite-plugins.html)
[Burp证书导入](http://www.keen8.com/post-164.html)
- [新手教程](http://www.freebuf.com/articles/web/100377.html)
- [Kali 中文网-Burp 教程](http://www.kali.org.cn/forum-80-1.html)
- [Burp 测试插件推荐](https://www.waitalone.cn/burpsuite-plugins.html)
- [Burp 证书导入](http://www.keen8.com/post-164.html)

BIN
pic/1.4.2_http_url.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 KiB