SQL注入是在学习网络安全时最先学到的一个漏洞知识点,难度不大,记录一些知识点,以后可以快速回顾。
首先,SQL是一门用来访问和操作数据库系统的标准计算机语言,而常见的数据库系统有MySQL, MS Access, MS SQL Server, Oracle 等等.
SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过Web应用程序来执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据,导致非法语句执行.简单的讲,就是让用户随意输入内容是可能出现问题的.
但是SQL注入有什么用呢?首先,SQL注入和一般的SQL查询一样,可以读取数据库内容,进而获取管理员后台账号密码,然后进入后台,读取文件,甚至可以写入Webshell.
在一般的网站上都会有如下的登录页面,页面上会有两条输入框,一行是用户名也就是常说的账号,一行是密码。那么我们正常登录时,输入账号密码,点击登录就会发送验证请求到服务器
大致的SQL语句为:
select id from users where username= 'lm7' and password = '123'
而对于这种简单的SQL语句,我们常用的SQL注入有:
' or 1=1 --
组装好的SQL语句是:
select id from users where username=' ' or 1=1 -- and password = '123'
那么在这条语句中的 '-- ' 将会注释掉后面的' and password ='123' ' 因此被执行的只有
select id from users where username ='' or 1=1
而根据' or 1=1 '的判断条件可以知道where后面的运算结果是1,因此将会从users表中查询所有的id,
那么如何找到SQL注入漏洞呢?只能说在有输入的地方都有可能存在注入漏洞.而一般有以下三种情况:
- GET请求:该请求在URL中发送参数
- POST请求:数据被包含在请求体中
- 其他注入型数据: HTTP请求的其他内容也可能会触发注入漏洞,例如在COOKIE中、HOST头中等
最后分享以下SQL注入流程图