SQL注入:1.SQL注入原理和检测方法

文章目录

  • DVWA
  • SQL注入原理
  • 手动SQL注入漏洞挖掘的五种方法
    • 1.基于错误的检测
    • 2.基于bool的检测
    • 3.基于睡眠的检测
    • 4.基于联合查询的检测
    • 5.基于堆叠注入

DVWA

DVWA(Damn Vulnerable Web Application)是一个用来进行安全脆弱性鉴定的PHP/MySQL Web应用,旨在为安全专业人员测试自己的专业技能和工具提供合法的环境,帮助web开发者更好的理解web应用安全防范的过程。

SQL注入原理

服务器将用户输入参数作为查询条件,直接拼接SQL语句,并将查询结果返回给客户端浏览器。

手动SQL注入漏洞挖掘的五种方法

1.基于错误的检测
2.基于bool的检测
3.基于睡眠的检测
4.基于联合查询的检测
5.基于堆叠查询的检测

1.基于错误的检测

输入: ‘
也就是在输入账号的位置输入一些奇葩的字符,若服务器没有报错说明服务器把这些错误的字符带入了数据库去执行了。我们就可以构造更复杂的语句达到目的。比如:输入 ‘ “ % ( ) 等

下面是演示:
SQL注入:1.SQL注入原理和检测方法_第1张图片
安全等级调为low
SQL注入:1.SQL注入原理和检测方法_第2张图片
输入一个 单引号,返回如下
在这里插入图片描述
给我们返回了错误,说明我们的单引号在数据库里面执行了,那么确认有SQL注入漏洞。

2.基于bool的检测

输入:1’ and ‘1’ = '1
SQL注入:1.SQL注入原理和检测方法_第3张图片
不仅没有报错,还返回了数据说明有漏洞,我们可以根据返回的数据格式推测执行的SQL语言为

selece first-name,surname from user where id='   '
selece first-name,surname from user where id=' 1 ' and '1' = '1  '      --在' '之间填充 1' and '1' = '1

and逻辑:前面为‘1’ 为真,后面 ‘1’ = ‘1 ’ 也为真。则整体为真。
我们实际可以把’ 1 ’ and ‘1’ = ‘1 ’ 替换为1(真)‘
所以上面上当与执行了
selece first-name,surname from user where id=’ 1 ’

3.基于睡眠的检测

’ and (select * from (select(sleep(0)))a)–+ 注意:不要忘了–后有空格,否则语法错误
’ and (select * from (select(sleep(20)))a)–+ 注意:不要忘了–后有空格,否则语法错误

看两次返回是否有时间间隔。

4.基于联合查询的检测

输入:’ union select 1,2–

selece first-name,surname from user where id=' ’ union select 1,2 -- ‘
selece first-name,surname from user where id=' ’ union select 1,2     --实际的语句

在这里插入图片描述

5.基于堆叠注入

'; update users set user='yuanfh' where user='admin   --写入我们的账号和密码
selece * from table_name(表名) where id=' '; update users set user='yuanfh' where user='admin ' 

你可能感兴趣的:(信息安全,知识框架,SQL注入漏洞)