• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >数据库其它 > sql注入之新手入门示例详解

sql注入之新手入门示例详解

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了sql注入示例,sql注入详解,sql注入,sql注入语句,sql注入工具等相关知识,希望本文的分享对您有所帮助

前言

在学习这篇文章之前,至于要学习了SQL注入的前提知识,可以参考之前写的一篇sql注入之必备的基础知识。

认识SQL注入

最开始就从最简单的开始,进入到less-1开始我们的SQL注入学习之旅。

通过改变http://localhost/sqlilabs/Less-1/?id=3的id值,页面上呈现不同的内容(username,password)。

那么我们就可以猜测在后台中的SQL语句就是根据前台传入的id值来去对应的数据。

那么SQL语句的写法为:

select username,password from table where id=input
</div>

判断存在SQL语句

接下来进行做测试,使用以下的语句进行测试:

http://localhost/sqlilabs/Less-1/?id=3 and 1=1
http://localhost/sqlilabs/Less-1/?id=3 and 1=2
</div>

这个时候页面没有任何的变化,这是不和符合我们预期的结果,因为当id=3 and 1=2时,SQL语句变为select username,password from table where id=3 and 1=2页面应该不会有内容。

确定存在SQL语句

使用了之前的语句不行之后,我们使用如下的语句:

http://localhost/sqlilabs/Less-1/?id=3'
</div>

当URl是以上的SQL语句时,页面上显示SQL执行错误信息You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''3'' LIMIT 0,1' at line 1。

其中最关键的错误信息是:

''3'' LIMIT 0,1'

最外层的引号是mysql出错时自动加上的。那么实际的SQL语句是 '3'' LIMIT 0,1。我们发现在我们输入的3'被引号包围了,那么我们之前猜测的select username,password from table where id=input有误,实际的后台的SQL语句应该为:

select username,password from table where id='input'
</div>

SQL注入验证

在确定存在了SQL注入之后,同时知道了后台SQL写法,那么此时我们就可以注入自己的SQL注入的代码。

由于我们可以控制id的值,那么最终输入的SQL语句会变为:

select username,password from table where id='input 攻击代码'
</div>

此时我们就可以构造如下的payload来验证我们的想法。由于我们的输入是被一对单引号包裹的,所以我们输入的语句必须要能够不被单引号影响。要么闭合单引号,要么注释掉单引号。(可以参考前面的文章)

#闭合单引号
id=1 and '1' = '1 # 
#注释单引号
id=1 and 1=1 # 或者 id=1 and 1=1--+
</div>

当我们使用上面的这3个payload之后,页面显示的结果是符合预期的。那么我们也可以确定id参数确实是存在SQL注入的。后台的SQL语句的写法也的确是select username,password from table where id='input'。

在确定了SQL语句之后,接下里就是注入SQL注入代码了。

执行SQL注入

使用SQL语句来进行脱裤,这一点是十分关键的。如果仅仅是知道存在SQL注入但是无法脱裤,那么实际上这个漏洞对于该网站的危害性还是很小的。如何构造正确的SQL语句进行脱裤,这一点也是十分重要的,在下一篇文章中将会详细地讲解SQL注入的详细的步骤。

注入类型判断

在本题中的SQL语句就称之为字符型的SQL注入,因为我们的输入在SQL语句执行的过程中被单引号所包括,其实在SQL语句执行中,这个id参数被当做是一个字符类型的数据。除了有字符型的SQL注入,当然还有数字型的SQL语句。那么如何区分这两者呢?

字符型SQL注入

在确定存在SQL语句这节中,当我们输入id=3'是页面的出错信息是 '3'' LIMIT 0,1。我们发现3'被引号所包围,那么说明这个就是一个字符型的SQL注入了。

数字型SQl注入

在less-2中,当我们同样输入id=3'时,页面的出错信息是 ' LIMIT 0,1,那么就说明是一个数字型的注入了同时还存在limit关键字,那么我们猜测less-2中的SQL注入为:

select username,password from table where id=input limit 0,1
</div>

以上都可以通过查看源代码的方式来进行验证。

SQL语句判断

但是很多时候我们通过单引号的方式并不能返回sql执行语句的错误信息,就无法通过错误信息得到注入类型。因为很多时候在后台的SQL语句会有各种千奇百怪的写法。

在less-3和less-4中的写法就是如下:

$sql="SELECT * FROM users WHERE id=('$id') LIMIT 0,1"
</div>

在less-3中使用了括号来包裹用户的输入

$id = '"' . $id . '"';
$sql="SELECT * FROM users WHERE id=($id) LIMIT 0,1";
</div>

在less-4中使用了双引号来包裹用户的输入,那么当你即使加上了单引号进行测试的时候还是无法出发SQL语句执行错误。

所以说很多时候仅仅使用单一的符号进行判断是完全不够的,要多使用不同类型的符号来进行测试的判断,使用包括',",\,(,=,&等等字符,甚至有时候还要使用其他的探查方法,因为你无法判断后台的SQL语句的写法,而且目前很多的网站开发人员已经有了一定的安全意识,可能常规的SQL探查语句也无法使用。关于其他跟多SQL注入的探查语句,网上有很多的资料。

总结

SQL注入的判断没有万能方法,只有不断的进行尝试,当你有了一定的经验之后,就会对注入类型有了自觉,同时对于SQL注入的判断也会更快。以上就是这篇文章的全部内容了,如果要对实际的网络中的网站进行安全测试,以上的知识是远远不够的。小编会继续更新更多sql注入的文章,请继续关注。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • sql注入之手工注入示例详解
  • sql注入之新手入门示例详解
  • 50条SQL查询技巧、查询语句示例

相关文章

  • 2017-05-11db2数据库常用操作命令大全
  • 2017-05-11sql注入之新手入门示例详解
  • 2017-05-11SQL大量数据查询的优化及非用like不可时的处理方案
  • 2017-09-08深入HQL学习以及HQL和SQL的区别
  • 2017-05-11SQL四舍五入、向下取整、向上取整函数介绍
  • 2017-05-11数据库的设计方法、规范与技巧
  • 2017-05-11SQL 优化经验总结34条
  • 2017-05-11SQL查询连续号码段的巧妙解法
  • 2017-05-11redis数据库查找key在内存中的位置的方法
  • 2017-05-11数据库的ACID特性术语详解

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • sqlserver中drop、truncate和delete语句的用法
    • 数据库的设计方法、规范与技巧
    • Python使用RethinkDB总结
    • 主键与聚集索引
    • Sql语句求最小可用id
    • db2数据库常用操作命令大全
    • SQLServer与Oracle常用函数实例对比汇总
    • PostgreSQL8.3.3安装方法第1/2页
    • 数据库查询中遭遇特殊字符导致问题的解决方法
    • 常用SQL语句优化技巧总结【经典】

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有