资安学习路上-Linux基础与Web基础3

URI && URL

URI(Uniform Resource Identifier)

用於标识某一网际网路资源名称的字串,允许使用者对网路中的资源通过特定的协定进行互动操作。

URL(Uniform Resource Locator)

URL 为 URI 的子集,可当作是网路上的门牌地址,也是大家俗称的网址,其格式分别为协定(http)、凭证资讯(@前面放使用者的帐密,为了资讯安全通常不会放)、网域/IP位址、Port号(预设的port号可更改)、档案位置路径、执行参数(?後面,给GET参数用)、片段识别码(#後面,不会传给服务器,相关漏洞DOM、XSS)。
https://ithelp.ithome.com.tw/upload/images/20220506/20148431UaSOhfHYow.png

上图取自台科大资安社课教材

需特别注意,URL除了保留字及合法的字符外,其余字元、符号等等会用16进位(%XX)来表示,而某些例外情况,如「空白」符号,在RFC 3986里用「%20」表示,是很常见的。
https://ithelp.ithome.com.tw/upload/images/20220506/20148431OWyBrhg4xE.png

上图取自台科大资安社课教材

编解码定义:
编码(Encoding):为了统一格式或收集资讯,会转换成特定的格式。
解码(Decoding):还原已经被编码过的字串,转成原本的内容。

其他编码方式:

  1. Base64
  • 利用 64 个可以列印的字元来表示二进位资料,由於log2(64),所以每6个位元为一个单元,对应某个可列印字元(A-Z、a-z、数字0-9)。
  • 特徵:等号
  • 原理:先把文字转成 ASCII 编码 --> 转成 bit --> 6 个一组 --> 变成索引 --> 对应编码
  • 查看原理:https://lab.feifei.tw/practice/basic/en_decode/base64.php
  • 转换方式:
    https://ithelp.ithome.com.tw/upload/images/20220506/20148431TXDNgnFYnn.png

上图取自台科大资安社课教材

  • 一般文字可编码:Hello <==> SGVsbG8=
  • 十六进位也可编码:0x4d 0x61 <==> TWE=
  • 常用解码网站:https://www.base64encode.org/
  • 於 HTTP/1.0 中使用基础认证,会在标头 Authorization: Basic Z3Vlc3Q6Z3Vlc3Q=
    代表 guest:guest
  • 使用Base64原因:真正的原因是二进制不兼容。某些二进制值,在一些硬体上,比如在不同的路由器,老电脑上,表示的意义不一样,做的处理也不一样。同样,一些老的软件,网络协议也有类似的问题。但Base64使用的64个字符,经ASCII/UTF-8编码後在大多数机器及软件上的行为是一样的。
  • 由於二进位制的位元组数不一定是3的整数倍,所以base64字串在结尾是可能有空的。先使用0位元组值在末尾补足,使其位元组数能够被3整除,然後再进行Base64的编码。在编码後的Base64文字後加上1个或2个=号这些空的状态,这也是为什麽base64很多都是以=(00)或==(00 00)结尾的。但注意,也存在不以=或==结尾的base64,只要编码的二进位制位元组数恰好被3给整除。
  1. rot13
  • 简易的替换式密码
  • 古罗马开发凯撒加密变体
    https://ithelp.ithome.com.tw/upload/images/20220506/20148431w4Uij6Fiwv.png

好用线上工具:asciitohex
可以快速在Ascii、Hexadecimal、BASE64等编码方式间,进行转换。
https://ithelp.ithome.com.tw/upload/images/20220506/20148431MtH9oMRMSX.png

HTTP -Method

浏览器发送Request封包时,有以下方法可以使用:

  • GET:一般浏览网页,用网址取得资料
  • POST:登入表单或者查询
  • HEAD:想知道有哪些标头栏位
  • OPTIONS:这个服务器支援的所有Method
  • PUT跟DELETE:常用於API,更新用PUT,删除用DELETE
    https://ithelp.ithome.com.tw/upload/images/20220506/20148431iYSYDODxcj.png

上图取自台科大资安社课教材

HTTP -状态码

服务器接收到请求後,会回送Response封包,并且会告诉浏览器,请求是否成功或者失败等等,分别如下:

  • 200成功
  • 3xx:重导向网址,可用open redirect攻击,使用方式"正常网址?url=恶意网址",有机会重导到恶意网址
  • 401没有做身分登入、403没有权限、404档案找不到,表示是自己本身的问题
  • 500资料库服务器资料有错误,或者loading过大,可能出现在SQL injection中,所以当尝试SQL injection时出现500,代表可能有机会攻击成功
    https://ithelp.ithome.com.tw/upload/images/20220506/20148431WvKp3v1bGs.png

上图取自台科大资安社课教材

下面为Response封包内容,一开始会有一个header,里面会述明使用的通讯协定版本(HTTP/1.1)、状态码(200)、说明(ok)等等,并再空一行後,开始讯息内容,这边须注意HTTP协定里会用CR+LF来表示:

  • CR:Carriage Return,对应 ASCII 中转义字元 \r ,表示 Return
  • LF:Linefeed,对应 ASCII 中转义字元 \n ,表示换行
    https://ithelp.ithome.com.tw/upload/images/20220507/20148431m4V1nyY2v9.png

上图取自台科大资安社课教材

Cookie(在浏览器叫Cookie、在服务器叫Session)

HTTP是无状态(stateless),为了使用者方便不用每次输入帐密,会用Cookie记住,短时间就不用再输入一次,流程如下图:
https://ithelp.ithome.com.tw/upload/images/20220506/20148431ONuprxhjgw.png

上图取自台科大资安社课教材

Session prediction攻击:
发现set-cookie的顺序性,藉由猜测(假冒)别人的cookie,窃取别人的身分,进而执行身分验证,获取相关权限。
https://ithelp.ithome.com.tw/upload/images/20220506/20148431WWreBGSSLa.png

上图取自台科大资安社课教材

Curl

模拟浏览器去向後端服务器访问一个网址(发一个Request过去),透过 HTTP 协定可以下载和上传档案的指令。
https://ithelp.ithome.com.tw/upload/images/20220506/20148431h75GjM10L7.png

上图取自台科大资安社课教材

  • Curl -X POST(修改方法)、 --data "参数=数值" 网址(修改参数内容)
    https://ithelp.ithome.com.tw/upload/images/20220507/201484319sG3SpCuBF.png

  • Curl -b "参数=数值" 网址 (修改cookie内容)
    https://ithelp.ithome.com.tw/upload/images/20220507/20148431qAnNup2eWG.png
    等同於下图
    https://ithelp.ithome.com.tw/upload/images/20220507/201484313io0Drdp71.png


<<:  Google IP List 总表

>>:  资安学习路上-网站常见漏洞与 Injection的爱恨情仇1

【Day17】音乐与自然语言处理的奇妙关联

音乐与自然语言 昨天我们有提到,我们想要生的是像小星星这样子古典钢琴音乐,像这样子的音乐音色是固定,...

Day23 - Online DDL

以往使用MySQL遇到要执行ddl语法的时候,为了不影响线上运作,会使用工具来执行。 比较常听到的使...

#16. Quiz App(原生JS版)

#16. Quiz App 所谓Quiz App就是提供给用户答题的小应用,包含数个选择题,选完一个...

Day 24:一起来建构Min-Heap吧

在实作之前我们先来认识Heap 堆积 (Heap),是一种特殊的完全(complete)二元树,也就...

Day04:原来早就在这里有共享经济了

今天就来谈谈字串吧。 相信以下这段程序是大家学Java第一天就会写的: class HelloWor...