SQL注入基础
注入原理
• SQL
SQL是结构化查询语言,是一种数据库查询和程序设计语言,用于存 取数据以及查询、更新和管理关系型数据库系统。
• SQL注入
所谓SQL注入,就是利用现有应用程序,构建特殊的参数输入,将 (恶意的)SQL语句注入到后台数据库引擎进行执行,最终达到欺骗 服务器执行恶意的SQL命令的目的
注入原理
• SQL
SQL是结构化查询语言,是一种数据库查询和程序设计语言,用于存 取数据以及查询、更新和管理关系型数据库系统。
• SQL注入
所谓SQL注入,就是利用现有应用程序,构建特殊的参数输入,将 (恶意的)SQL语句注入到后台数据库引擎进行执行,最终达到欺骗 服务器执行恶意的SQL命令的目的
注入分类
注入形式 数字型 id=11111 and 1=1 id=$id
字符型 name=1'and'1'=‘1 name='.$name. '
搜索型 key=平安%'and'%’= key='%.$key.%’
盲注:时间延迟、错误处理
注入位置
Get
Post
Header
Sql语句:
SQL注入危害
- 敏感数据泄漏—拖库、撞库
- 获取数据库权限
- Webshell文件写入
- root权限
- Web目录可写
- 没有配置–secure-file-priv
- 拒绝服务攻击
SQL注入技巧
- 常规注入
- 字符型注入 :name=1'and'1'=‘1
- 数字型注入: id=11111 and 1=1
- boolen型注入:id=1 and length(database())=1%23
- 搜索型注入: key=平安%'and'%’
- 盲注—基于时间的延迟 1’ and if(length(database())=4,sleep(5),1) #
- 宽字节注入
- 二次注入
宽字节注入
原理:
Web应用在防御过程中因数据库的字符集转换引发单引号逃逸, 由此产生的SQL注入。
以GBK字符集为例,GBK编码范围为:高位0x81-0xFE,低位为 0x40-0x7E和0xA1-0xFE。
在GBK中,一个中文占用两个字节, 如国字的GBK编码为%B9%FA。
%df%27 %df%5c%27 運%27
二次sql注入
原理:
Web应用在防御时,会将用户输入的特殊字符作转义处理, 在真正插入数据库时会将转义字符去掉,去掉后再将带特殊字符的 数据保存到数据库中。当程序将关联的插入数据当作参数进行查询 时,若未对该参数值作安全防护处理,则会引发特殊字符的逃逸, 从而导致SQL注入。
SQL注入防御
注入分类
- 数字型注入
- 字符型注入
- 搜索型注入
- 盲注型
SSRF
Server-Side Request Forgery服务器端请求伪造
SSRF漏洞形成的原因主要是服务器端所提供的接口中包含了所要请求的内容的URL参数,并且未对客户端所传输过来的URL参数进行过滤。
redis持久化--RDB
redis持久化--AOF
gopher协议
定义:Gopher是Internet上一个非常有名的信息查找系统,它将Internet上的文件组织成某种索引,很方便地将用户从Internet的一处带到另一处。在WWW出现之前,Gopher是Internet上最主要的信息检索工具,Gopher站点也是最主要的站点,使用tcp70端口。但在WWW出现后,Gopher失去了昔日的辉煌。现在它基本过时,人们很少再使用它;
Gopher 协议可以做很多事情,特别是在 SSRF 中可以发挥很多重要的作用。利用此协议可以攻击内网的 FTP、Telnet、Redis、Memcache,也可以进行 GET、POST 请求。
Gopher协议格式:
URL:gopher://<host>:<port>/<gopher-path>\_后接TCP数据流
gopher的默认端口是70,回车换行需要使用%0d%0a。
redis之RESP协议
Redis客户端与Redis服务端基于一个称作RESP的协议进行通信,RESP全称为Redis Serialization Protocol,也就是Redis序列化协议。
RESP抓包结果
判断中间件和语言
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。