WEB安全入门(一)

205 阅读5分钟

WEB开始

我已经早就开始学习网络安全了,但是因为一直没有做笔记,还有学业等原因,做过的题记住的知识都忘记了。今天打算从头开始记笔记,也好有一个可以查找的地方,更符合我的习惯。

最开始的时候要做的肯定是相关工具的安装,这里我已经安装好了一些,之后可能还会补充但那是之后的事情了。
我在这里简单的列举出来,供大家学习:Burp Suite Professional(这里我使用的是国产的代替,Yakit,有钱之后支持正版);还有数据库可视化的工具Navicat或者balabala一大堆,不过都是需要付费的;还要去下载一个设置代理的浏览器插件;还有一些刷题的平台,国内有很多CTF平台,国外也有,比如tryhackme之类的;python的运行环境。
不全的地方在之后笔记当中也会被记录下来,记得看后续就好。

对了!最好准备一个记笔记的软件,看我写笔记自己也要写哦,然后如果有什么好的资源也请私信给我哦。我这里推荐Typora来记录笔记,当然各位用黑曜石等也可以。

HTTP报文方面

我们可以使用yakit或者火狐浏览器自带的F12抓取HTTP报文。如果需要抓取https报文需要把yakit的证书加入到信任名单里面,这里不演示了。 标准的url结构是:scheme:[//[user:password@]host[:port]][/]path[?query][#fragment],很标准,甚至其中有一部分我们都不经常能看到。
url编码是十六进制,这点比较重要,在我们修改报文的时候有时候需要把相关字符进行转义,不然无法识别。之后会比较具体的说,不要着急。
HTTP协议定义了一系列的请求方法,有时也被称为“HTTP动词”。以下是HTTP/1.1和HTTP/2中定义的主要方法:

  1. GET:请求指定的资源。GET方法应该只用于数据检索,并且不应该产生“副作用”。
  2. HEAD:与GET方法相同,但服务器只返回HTTP头部,不返回实际的数据。
  3. POST:用于提交数据到指定的资源,数据包含在请求体中。这可能会导致在服务器上的资源状态改变或副作用。
  4. PUT:上传指定的资源的完整内容。
  5. DELETE:删除指定的资源。
  6. CONNECT:为指定的资源建立一个网络连接,通常用于SSL隧道。
  7. OPTIONS:描述与目标资源通信的通信选项。
  8. TRACE:沿着请求的路径回显请求。主要用于诊断。
  9. PATCH:对资源应用部分修改。

当然了,其中最常用到的就是GET和POST请求,甚至有些方法在很多WEB应用当中并没有支持。
在网络当中传输的都是一些字节流,如果想要让目标主机能够识别数据到底代表了什么就制定了这些规范,报文需要按照一定的格式来写,才能被正确识别。
其实我真的要说一句,玩(学)计算机软硬件的是真的费钱,如果你想要支持正版并且流畅的使用,脑子跟得上,还需要金钱跟得上。(当然我们这里对用于学习研究的盗版处置并不严格。)

请求报文和相应报文都是按照相关的格式进行书写,来上个图:

image.png

image.png
图片来源网络
它包括了请求行、请求头部、空行以及请求数据(响应报文类似)。 当我们刷题的时候就会遇到通过修改请求头部拿到flag的情况,类似题解可能会在之后做题总结当中用到。总得来说就是添加或者修改请求头部,来满足要求。
在我们的window系统下按下回车基本上就包括了每行的回车符'\r'还有换行符'\n'。
照片里面的头部域名称写得是一些HTTP的字段,用来提供一些额外的信息,与本身要传递的信息一般没有什么关系。
比较重要的HTTP字段有一些,比如User-Agent(一些客户端的信息)、X-Forwarded-For(客户端的ip地址)、Referer(之前的访问页面,说明来路的)、Clinet-IP(用户真正的IP)、Content-Type(说明发送和接收的内容类型,以便可以正确处理数据,此字段用于描述MIME(Multipurpose Internet Mail Extensions)类型)等,在网上可以查到更加丰富的字段,鼓励大家自行搜索。
一些值Content-Type值:

  1. text/plain
  2. text/html
  3. text/css
  4. image/jpeg
  5. image/png
  6. image/svg+xml
  7. audio/mp4
  8. video/mp4
  9. application/javascript
  10. application/pdf
  11. application/zip
  12. application/atom+xml

robots协议

简单说一下就是某些网站会在自己根目录下存放一个名叫robots.txt的文件,用来明确到底什么东西是允许爬取什么是不允许的。

练习

说了这么多,我也要动动我许久未动的小手了,做一道HTTP字段的题目。(From 攻防世界)

image.png
点进去题目网站之后,渲染出来的内容就是:

image.png
查看网站源代码没有什么可疑的地方:

image.png
使用yakit进行抓包,拦截请求流量修改相应字段。他说ip地址必须要是123.123.123,那就听他的。

image.png
通过添加xff字段放行流量得到响应报文。

image.png
现在还要求必须来自谷歌官网跳转过来的,那再加上相应字段信息:

image.png
加上这个之后发送过去,得到相应,获得flag。

image.png