SQL注入绕过的技巧总结

 更新时间:2017年02月28日 09:12:40   作者:乘物游心  
这篇文章主要给大家总结了一些关于SQL注入绕过的技巧,其中包括引号绕过、逗号绕过以及比较符(<,>)绕过,文中给出了详细的介绍和示例代码,相信对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。

前言

sql注入在很早很早以前是很常见的一个漏洞。后来随着安全水平的提高,sql注入已经很少能够看到了。但是就在今天,还有很多网站带着sql注入漏洞在运行。稍微有点安全意识的朋友就应该懂得要做一下sql注入过滤。

SQL注入的绕过技巧有很多,具体的绕过技巧需要看具体的环境,而且很多的绕过方法需要有一个实际的环境,最好是你在渗透测试的过程中遇到的环境,否则如果仅仅是自己凭空想,那显然是不靠谱的。这篇文章就是总结我在遇到的CTF题目或者是渗透环境的过程中,所使用到的sql注入的绕过技巧,这篇文章随着自己的见识和能力不断的提升,所总结的方法也会变多。

一、引号绕过

会使用到引号的地方是在于最后的where子句中。如下面的一条sql语句,这条语句就是一个简单的用来查选得到users表中所有字段的一条语句。

select column_name from information_schema.tables where table_name="users"

这个时候如果引号被过滤了,那么上面的where子句就无法使用了。那么遇到这样的问题就要使用十六进制来处理这个问题了。
users的十六进制的字符串是7573657273。那么最后的sql语句就变为了:

select column_name from information_schema.tables where table_name=0x7573657273

小结:使用十六进制可以绕过引号

二、逗号绕过

在使用盲注的时候,需要使用到substr() ,mid() ,limit。这些子句方法都需要使用到逗号。对于substr()mid()这两个方法可以使用from to的方式来解决。

select substr(database(0 from 1 for 1);
select mid(database(0 from 1 for 1);

对于limit可以使用offset来绕过。

select * from news limit 0,1
# 等价于下面这条SQL语句
select * from news limit 1 offset 0

小结:使用from可以绕过逗号

三、比较符(<,>)绕过

同样是在使用盲注的时候,在使用二分查找的时候需要使用到比较操作符来进行查找。如果无法使用比较操作符,那么就需要使用到greatest来进行绕过了。

最常见的一个盲注的sql语句。

select * from users where id=1 and ascii(substr(database(),0,1))>64

此时如果比较操作符被过滤,上面的盲注语句则无法使用,那么就可以使用greatest来代替比较操作符了。greatest(n1,n2,n3,等)函数返回输入参数(n1,n2,n3,等)的最大值。

那么上面的这条sql语句可以使用greatest变为如下的子句:

select * from users where id=1 and greatest(ascii(substr(database(),0,1)),64)=64

小结:使用greatest()绕过比较操作符。

总结

好了,以上就是关于SQL注入绕过技巧的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

相关文章

  • 利用SQL脚本导入数据到不同数据库避免重复的3种方法

    利用SQL脚本导入数据到不同数据库避免重复的3种方法

    这篇文章主要给大家介绍了关于利用SQL脚本导入数据到不同数据库避免重复的3种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-10-10
  • 恢复 SQL 被注入后的数据代码

    恢复 SQL 被注入后的数据代码

    当数据库别批量注入挂马后,需要批量替换掉,可以参考下面的代码。
    2009-02-02
  • sql注入之新手入门示例详解

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

    这篇文章仅仅是对SQL注入进行了一个简单的入门知识的讲解,是sql注入的基础篇,有个好的开头能够帮助大家对SQL注入有一个具体清晰的了解和认识。下面来一起看看吧,有需要的可以参考借鉴。
    2016-09-09
  • sql语句中where 1=1的作用

    sql语句中where 1=1的作用

    在看程序时时,发现基本只要是拼凑的SQL语句,基本上都会这样写:
    2008-08-08
  • 最新统计排名前十的SQL和NoSQL数据库排行榜

    最新统计排名前十的SQL和NoSQL数据库排行榜

    这篇文章主要介绍了最新统计排名前十的SQL和NoSQL数据库排行榜,本文包括Oracle、MySQL、Microsoft SQL Server、PostgreSQL、MongoDB等数据库,需要的朋友可以参考下
    2014-09-09
  • Navicat Premium12进行数据库定期自动备份的方法步骤

    Navicat Premium12进行数据库定期自动备份的方法步骤

    本文主要介绍了Navicat Premium 12进行数据库定期自动备份,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • 深入理解数据库之表的唯一、自增等七大约束

    深入理解数据库之表的唯一、自增等七大约束

    真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据的正确性,本文就来介绍一下数据库之表的唯一、自增等七大约束,感兴趣的可以了解一下
    2023-09-09
  • 数据库正规化和设计技巧

    数据库正规化和设计技巧

    数据库正规化和设计技巧...
    2007-06-06
  • Navicat打开表的速度慢的问题解决

    Navicat打开表的速度慢的问题解决

    最近使用Navicat打开表或者设计表都很慢,需要等十几秒才能打开,一开始我以为是我电脑老了,没想到新电脑打开也很慢,所以本就给大家分享一下Navicat打开表的速度慢的问题解决方法,需要的朋友可以参考下
    2023-12-12
  • 开源数据库设计神器chiner的安装及初体验介绍

    开源数据库设计神器chiner的安装及初体验介绍

    最近在造轮子,从 0 到 1 的那种,就差前台的界面了,大家可以耐心耐心耐心期待一下。其中需要设计一些数据库表,可以通过 Navicat 这种图形化管理工具直接开搞,也可以通过一些数据库设计工具来搞,比如说 PowerDesigner,更专业一点
    2022-02-02

最新评论