web基础+sql注入
web应用的基本架构
HTTP协议
HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写。它的发展是万维网协会(World Wide Web Consortium)和Internet工作小组IETF(InternetEngineering Task Force)合作的结果,(他们)最终发布了一系列的RFC,RFC 1945定义了HTTP/1.0版本。其中最著名的就是RFC2616。RFC 2616定义了今天普遍使用的一个版本——HTTP 1.1。
HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。
HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。HTTP是一个无状态的协议。
http请求报文
http请求由三部分组成,分别是:请求行,消息报头,请求正文
http请求报文----请求行
请求行:包括http请求的种类/方法,请求资源的路径,http协议版本三个部分,以空格符(%20)分隔,以回车换行符结尾(%0d%0a)
常见请求的种类/方法,定义了服务器收到请求后的“动作”:
GET
:请求指定的页面信息,并返回实体主体。
POST
:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
HEAD
:类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
OPTIONS:
它用于获取当前URL所支持的方法。若请求成功,则它会在HTTP头中包含一个名为“Allow”的头,值是所支持的方法,如“GET, POST”。
TRACE
:回显服务器收到的请求,主要用于测试或诊断。
PUT:
从客户端向服务器传送的数据取代指定的文档的内容。DELETE:请求服务器删除指定的页面。
MOVE:
请求服务器将指定的页面移至另一个网络地址。
COPY:
请求服务器将指定的页面铂贝至另一个网络地址。
注意:
出于安全考虑,通常要求服务器只允许使用GET和POST方法,两者之间最大的区别是GET请求的所提交的所有数据都在URL中体现,不利于提交复杂的数据,且安全性相对较低,而POST请求可以将主要数据放在请求正文中提交,常用于提交复杂数据(如图像、文件等)或敏感信息(如用户鉴权信息)。
http请求报文—消息报头
请求消息报头说明了客户端的基本信息,以及如何与客户端进行交互,消息报头由多行组成,每行以key:value的形式体现,每行末尾包括一个回车换行符(%0a%0d),消息报头末尾以两个回车换行符(%0a%0d)作为结束。
http响应报文----状态行
状态行:包括http版本,状态码,状态描述三个部分,以空格符(%20)分隔,以回车换行符结尾(%0d%0a)
状态代码由三位数字组成,第一个数字定义了响应的类别,且有五种可能取值。
1xx:指示信息–表示请求已接收,继续处理。
2xx:成功–表示请求已被成功接收、理解、接受。
3xx:重定向–要完成请求必须进行更进一步的操作。
4xx:客户端错误–请求有语法错误或请求无法实现。
5xx:服务器端错误–服务器未能实现合法的请求。
常见状态代码、状态描述的说明如下。
200 OK:客户端请求成功。
302 Move temporarily:请求的资源临时从不同的URI响应请求,引导用户向其他URL请求资源。
400 Bad Request:客户端请求有语法错误,不能被服务器所理解。
403 Forbidden:服务器收到请求,但是拒绝提供服务,通常是权限限制
404 Not Found:请求资源不存在,举个例子:输入了错误的URLo
500 Internal Server Error:服务器发生不可预期的错误。
503 Server Unavailable: 服务器当前不能处理客户端的请求,一段时间后可能恢复
信息收集类解题
信息收集的题目考题一般是收集关于目标网站的信息,如前端页面提示与HTTP源码、返回包请求包信息、网站路径文件等,根据这些信息分析得到flag。简单的题目是直接在源码中就可以获取到flag,复杂些的需要深入收集信息。
工具准备:浏览器,burp
HTTP协议类解题
HTTP协议常见的考点是,修改HTTP头符合某种条件,达到成功访问目标的目的。常见的方法是修改X-Forwarded-For,X-Forwarded-Host , CLIENT-IP, referer,host,Accept-Language,COOKIE等头部参数或字段的值。
(如,要求从某个IP或主机访问,一般是修改X-Forwarded-For,X-Forwarded-Host , CLIENT-IP, host参数的值,要求从某国家访问,一般修改Accept-Language值,要求从某个页面访问就修改referer,有关身份认证类的一般修改COOKIE的值。)
工具准备:浏览器、Burp
数据库系统基本概念
数据库
:长期储存在计算机内的、有组织的、可共享的数据集合
DBMS
(DataBase Management System) :一种操纵和管理数据库大型软件,用于建立、使用和维护数据库,它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。常见的DBMS包括access,sqlserver、mysql、oracle、DB2等
关系型数据库系统特点
数据结构化和共享性
数据独立性
数据的完整性约束
- 实体完整性(通过主键约束条件)
- 参照完整性(通过主外键约束条件)
- 用户自定义完整性(通过CHECK子句)数据由DBMS
统一管理和控制
结构化查询语言SQL
SQL语句格式
每条语句都请求DBMS完成一个动作,下面是Select查询语句格式.
sql注入攻击
动态页面有时会通过脚本引擎将用户输入的参数按照预先设定的规则构造成SQL语句来进行数据库操作,SOL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,改变原有的SQL语句的语义来执行攻击者所要的操作,其主要原因是程序没有采用必要的措施避免用户输入内容改变原有SQL语句的语义。
经典的万能密码
3种经典万能密码: