2019-07-12

Web基础知识


1 HTTP介绍

HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。

它的发展是万维网协会(World Wide Web Consortium)和Internet工作小组IETF(Internet Engineering Task Force)合作的结果。

它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。

1.1 版本

最常用的是HTTP1.0/1.1

最新版本是HTTP2.0,与1.0/1.1相比,有了更高的性能、安全性和灵活性

以前的版本0.9等

2 HTTP协议

2.1 URL与资源

2.1.1 方案的世界

在TCP/IP模型中,所有的网络连接都要使用方案,方案定义使用什么协议,比如http、ftp、telnet

一个标准的网络请求包括:

<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>

但在实际使用过程中,对于不同协议可以缺少某些信息,比如

ftp://192.168.169.121

http://www.baidu.com/index.html

对于http协议,主要的包括scheme(协议)、host(主机)和path(资源路径)

2.1.2 URI、URL和URN

URI:统一资源标识符,包括URL和URN

URL:统一资源标识符,比如http://www.baidu.com/index.html就是一个URL

URN:统一资源名,它是无关物理位置的资源名定义,例子urn:ieft:rfc:2141

目前URN处于试验阶段,实际应用还很困难,在没有特别说明时,一般我们说的URI就代表URL

2.1.3 媒体类型

在HTTP中,不管是word文件、js文件或者图片都是资源,通可以通过URL进行请求,但每种不同的文件都要进行区分,以便服务端和客户端进行正确处理,比如播放声音、显示文字。

因此,HTTP仔细地给每种要通过http请求响应传输的对象都打上名为MIME类型的数据格式标签。

MIME: Multipurpose Internet Mail Extension 多用途因特网邮件扩展

最开始是为了解决电子邮件系统之间的问题,后来用于定义更多类型的多谋体内容。常见的MIME:

html:text/html

Ascii: text/plain

Json:text/json

Jpg:image/jpeg

Gif:image/gif

Ppt: application/vnd.ms-powerpoint

Quicktime:video/quicktime

2.2 协议介绍

2.2.1 协议栈

HTTP在TCP/IP协议栈中的位置

HTTP是基于TCP/IP的应用,因此HTTP无须关心网络寻址、数据传输和拓扑结构

2.2.2 协议工作流程

在HTTP1.0/1.1中,HTTP采用请求响应模型来处理HTTP事务 HTTP事务有一条请求命令和一个响应结果组成,它们通过HTTP报文进行数据传输

(1)客户端连接到Web服务器

(2)发送HTTP请求

(3)服务器接受请求并返回HTTP响应

(4)释放连接TCP连接

(5)客户端浏览器解析HTML内容

3 HTTP报文

3.1 报文

HTTP1.0/1.1报文由三部分组成:起始行、首部以及可选、包含数据的主体

其中起始行和首部是由行分隔的ASCII文本

主体是一个可选的数据块,主体中可以包含文本也可以包含二进制数据,也可以为空,与首部通过空一行进行区分

请求报文的格式:

<method> 

<headers>

<entity-body>

响应报文的格式:

<version> 

<headers>

3.1.1 起始行

所有的HTTP报文都以一个起始行做为开始

请求报文:<method> <request-url> <version>   说明要做什么

响应报文:<version> <status> <reason-phrase>  说明结果怎样

method,包括GET/POST/DELETE等等

version,目前绝大多数都是1.0或者1.1

status,表示做的结果

reason-phrase,是对状态结果的进一步补充说明

3.1.2 首部字段

HTTP首部字段向请求和响应报文中添加了一些附加信息,是一系列 key-value的列表,比如Content-Type:image/jpeg 表示类型是jpeg图片

首部的分类包括

通用首部:在请求和响应中都出现的信息

请求首部:只在请求报文中出现的信息

响应首部:只在响应报文中出现的信息

实体首部:描述主题的长度、内容等的信息

扩展首部:在HTTP规范中没有定义的其他信息

3.1.3 实体

HTTP实体是HTTP报文的负荷,是HTTP要传输的数据内容。

3.2 方法

HTTP基本的方法包括:GET/POST/HEAD/PUT/TRACE/OPTIONS,用来告诉服务端要做什么操作

3.2.1 GET

GET是最常用的方法,通常用于请求服务器发送某个资源

3.2.2 POST

POST是常用的方法之一,用于向服务端提交数据,有主体

逻辑漏洞——简单的任意账户密码重置

这类逻辑漏洞 就没有停的时候 在WAF越来越普及的时代,SQL注入,远程命令执行这类高危可操作漏洞将越来少,而逻辑漏洞则是目前WAF(很久之后的WAF或许也不能防御)的盲区。所以作为一名合格的黑客,学好逻辑漏洞的挖掘思路,是必须的。

浅谈APP漏洞挖掘之逻辑漏洞

.APP漏洞挖掘中逻辑漏洞,包括任意用户密码重置,支付漏洞,任意用户未授权登录。

1任意用户密码重置正文

  首先,我们来看看任意用户密码重置。 

  方法一:密码找回的凭证太弱,为4位或6位纯数字,并且时效过长,导致可爆破从而重置用户密码。

  验证码为4位纯数字,我们使用burpsuite爆破。


  可以看到成功爆破出了。4位数字0~9有9999种可能,我们线程设置10,五分钟之内就可以爆破出凭证。

  方法2:验证码传输在数据包中。

  这里共有两种可能,一种在返回包,一种在获取验证码的数据包中。我们来看两个实例。

  第一个:验证码在返回包中

  在输入好手机号点击下一步时,我们抓包,截取返回包。

注意以上逻辑问题,不可存在越权,或者重要的凭证在不该出现的地方出现。


请求包响应包中每一行的意思

GET /dvwa/DVWA-master/vulnerabilities/brute/?username=§admin§&amp;password=§password§&amp;Login=§Login§ HTTP/1.1

得到╱dvwa╱dvwa–大师╱弱点╱野蛮?用户名=<UNK>admin<UNK>&密码=<UNK>密码<UNK>&登录=<UNK>登录<UNK>htt/1.1

Host: localhost

主机:本地主机

Upgrade-Insecure-Requests: 1

升级不安全的请求:1

User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36

用户代理:mozilla/5.0(窗口nt 10.0;wow64)

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8

接受:文本/html,应用程序/xhtml+XML,应用程序/xml;Q=0.9,图像/webp,图像/apng,*/*;Q=0.8

Referer: http://localhost/dvwa/DVWA-master/vulnerabilities/brute/

引用者:http://localhost/dvwa/DVWA-master/vulnerabilities/brute/

Accept-Encoding: gzip, deflate, br

接受编码:gzip,减缩,BR

Accept-Language: zh-CN,zh;q=0.9

接受语:zh-cn,zh;Q=0.9

Cookie: security=low; PHPSESSID=v7ed0ita6o84t8gsu8in19dv43

Cookie:安全性=低;ppsesid=v7-0ita 6 o 84t 8gsu

Connection: close

连接:关闭

问题1


什么样的字段是爆破字段,爆破是起到什么样的作用



就是假如你不知道无线网密码

你想给他爆破出来  于是你就一个一个的密码去试

不对了就换一个密码

而在你输入了密码之后  会提交一个包出去

那个包里面肯定不止有你的密码,比如会有那个无线网的名称啊

等等

选择爆破的字段就是  你要对什么进行爆破

你要爆破密码  那就把密码选上。那个软件就会从字典里面一行一行读

然后把你选的那个字段替换成他读的那个数据


问题2

1' union select1,database()# 单引号让ID闭合

数据库的语法  select name,pass from test where id = '1';

这是从test数据库中把id为1的人的名字和密码找出来。

在导入那个数据库文件之后 你可以试一下  如果把where id ='1 ;这样是会出错的

就像语文中,说的话 需要上引号和下引号一样

只有半个是不行的。

他的原始语句是select name,pass from test where id = '你的输入'

你想要的效果是 select name,pass from test where id = '1' union select1,database()#

所以你需要输入 1' union select1,database()#

结合起来就是select name,pass from test where id = '1' union select1,database()#'

最后面的'因为注释的原因失去作用。

因为你的输入是拼接在''中间的,前面已经有了一个'了,但是你还想输入其他的语句,所以你要输入一个',与前面的'闭合,保证数据库语法的正确,才可以运行。

问题3

数据型注入

在url中的输入你的payload

eg:http://localhost/sqli-labs-master/Less-2/?id=1--


Nmap基础使用

001.

使用win+r组合键打开运行窗口,输入cmd,按回车打开cmd

输入nmap ip即可使用。

-Pn是不对主机进行存活测试直接扫描

-script是使用脚本,后面跟脚本名字,vuln是基础漏洞检测脚本

-p指定扫描的端口,后面跟端口号

-sS是隐蔽扫描,不会进行完整的握手,不产生日志记录

-sV是开启版本检测,会得到目标主机的版本相关的信息


002

一个数据库里有很多表,每个表里有许多字段,每个字段有各自的内容。

数据库相当于学校名称(一中、二中、三中),表相当于班级(一班、二班、三班),

字段相当于学生的属性(名字、学号、性别、),

字段的内容就是前面学生属性的具体内容(名字是什么,学号是什么,性别是什么)。

003

数据库查询语句一般是查询一个字段的内容是什么,相当于查上面举得例子的学生

select 字段

from 表名

Select 密码

from 班级

例子:Select pass from new

004

如果你不想看所有的内容,只想看一个,可以用where

select 字段名 from 表名

where 条件。

Select 密码

from 班级 where 学生学号=1

例子:select pass from new where id=1

005

如果你只想看学号为2和3的人的密码,可以用limit

例如

Select pass from new limit 1,2     (因为是从0开始排序

所以学号为1的人排序是0,学号为2 的人排序是1)

006

当你想知道两个字段的内容时,

意思就是你想知道一个学生的姓名和密码

可以把想知道的字段名用逗号相连:

select name,pass from new where id=1

当然也可以用

select name,pass from new limit 1

007

Union 联合查询

联合查询的意思是,你刚刚已经进行过一次查询了,

现在你想在查另外一个,他会把你第二次查询的内容放在第一次查询结果的后面。

比如说你第一次查了一个学生的名字,你现在用联合查询又查了他的密码,

他会把你查到的密码放在你第一次查到的名字的下面。

008

讲道理,“nina”是第一个学生的密码,但是它会把他放在第一个你查到的东西的后面。

Union 特点:前后查询的字段数必须一样

比如说我刚刚写了,可以查一个人的名字和密码

select name,pass from new

如果你想用union查询,那你查的字段必须也是两个。

比如这个第一次查的是名字和密码 两个字段 后面只查了一个id字段就会报错

select name,pass from new union select id from new

009

当前面查的是名字和密码 两个字段 后面查了id和pass两个字段时就可以正常运行,

并且把查到的id放在name下面,把pass放在pass下面

数据表之间的关系

数据表关系

关联映射:一对多/多对一

存在最普遍的映射关系,简单来讲就如球员与球队的关系;

一对多:从球队角度来说一个球队拥有多个球员 即为一对多

多对一:从球员角度来说多个球员属于一个球队 即为多对一

关联映射:一对一

一对一关系就如球队与球队所在地址之间的关系,一支球队仅有一个地址,而一个地址区也仅有一支球队。

数据表间一对一关系的表现有两种,一种是外键关联,一种是主键关联。

关联映射:多对多

多对多关系也很常见,例如学生与选修课之间的关系,一个学生可以选择多门选修课,而每个选修课又可以被多名学生选择。

数据库中的多对多关联关系一般需采用中间表的方式处理,将多对多转化为两个一对多

                          dvwa sql注入


级别:Low


① 输入1  提交


④输入1 and 1=2提交


输入

1' union select 1,table_name from information_schema.tables where table_name='dvwa'#


输入1' union select 1,column_name from information_schema.columns where table_name='users'#


输入 

1' union select 1,concat(user,password) from users#


级别 Medium





级别 High



sql-labs

简介

      结构化查询语言,也叫做SQL,从根本上说是一种处理数据库的编程语言。对于初学者,

数据库仅仅是在客户端和服务端进行数据存储。SQL 通过结构化查询,关系,面向对象编程等

等来管理数据库。编程极客们总是搞出许多这样类型的软件,像MySQL,MS SQL ,Oracle以

及Postgresql。现在有一些程序能让我们有能力通过结构化查询来管理 大型数据库。脚本小子

们一定已经动手体验了类似SQL注入等这样的操作,虽然他们可能已经通过使用自动化工具例

如SQL Map或者SQLNinja来实施攻击,但却还不知它真正的原理。在这篇简短的教程里,我

将会尽力让你对SQL注入是怎样工作的,攻击是怎样发生的以及什么是应用程序SQL漏洞有

-个深入的理解。



最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容

  • 第二天 数据包分析 POST:是常用的方法之一,用于向服务端提交数据,有主体 (发送上传) GET: 是最常用的方...
    c7188eaf395a阅读 434评论 0 0
  • MSSQL 跨库查询(臭要饭的!黑夜) 榨干MS SQL最后一滴血 SQL语句参考及记录集对象详解 关于SQL S...
    碧海生曲阅读 5,556评论 0 1
  • 外键条件 外键要存在,首先必须保证表的存储引擎是innodb 列类型必须与父表的主键类型一致 一张表中的外键名字不...
    关若飞阅读 159评论 0 0
  • where子句: 返回结果0或1,0代表false,1代表true 判断条件比较运算符:>、<、>=、<=、!=、...
    CC__XX阅读 357评论 0 0
  • 星期日,小婆来我家时,居然把双手放在后面,像是藏有什么东西。 走进屋,她就笑呵呵地说:“张佳玲,你...
    张佳玲zzz阅读 145评论 0 1