一些常见的SQL注入手段

管理员

一些常见的SQL注入手段

联合查询注入

这主要是针对页面可以对于输入的内容进行有效的回显。

常用的类似语句会有一下几种。

?id=-1'union select 1,2,3--+
?id=-1'union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+
?id=-1'union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+
盲注

盲注主要是由于输入的数据,页面无法进行有效的回显。就是说,无法从页面中得到我们想要的信息。这个过程中,我们主要是一些sql语句中的函数,比如 sleep() updatexml() floor() 这些函数。以及我们许多时候还会搭配 burp 进行暴破操作。

时间盲注

这主要是针对页面没有返回内容,主要是通过时间上的差异进行注入操作,很多时候会先通过 sleep()函数,进行切入。

布尔盲注

这种的使用途径,是对于页面对于不同的情况有返回内容,但是没有具体的信息,以及报错信息的情况。我们可以输入不同的内容,观察返回页面的不同,来进行注入操作。

常用的函数有

length(); substr(); ascll();

报错盲注

这主要是页面无法回显有效内容,但是可以有报错信息的时候进行的操作。常用的有 updatexml() extractvalue() floor() 这些之类的。

使用顺序

在盲注这一块,我的考虑顺序一般是,报错 --> 布尔-->时间 这个顺序,进行思考的,这东西,感觉更多的是个人习惯问题,还是有很多人喜欢,测试一来就用 sleep() 函数的。

堆叠注入

这种注入手段的使用场景我感觉还是有点少见,(有很大可能是我菜的原因。)这种手段如果想成功注入的话需要当调用数据库函数支持执行多条sql语句时才能够使用。其可能受到API或者数据库引擎,又或者权限的限制。但实际情况中,如PHP为了防止sql注入机制,往往使用调用数据库的函数是mysqli_ query()函数,其只能执行一条语句,分号后面的内容将不会被执行。

这种手段,我记得是sql labs的page 3部分有接触到过,当时印象不太深,后面在一道CTF题目上接触到过。才有了较为深刻的印象。

这个部分,废话 多了点,主要是这种注入手段,大家接触的可能会稍微少点,我就多说了几句。

原理的话,还是比较简单的,就是个;分隔,成堆的执行sql语句,例如

select * from users;show databases; 

就同时执行以上两条命令,所以我们可以增删改查.如果可以权限的话,这种注入姿势,我感觉还是很6的。

总结

我在打靶场以及做题的中,大概碰到的SQL注入手段,大概就这些吧。在实际的注入过程中,应该还有涉及到一些绕过姿势的问题。以及现在很多网站都有一道WAF的问题。所以大家加油吧!!!

卧槽,我居然忘了还有 sqlmap 这个东西。脚本小子的快乐。我第一次 sql labs的通关好多地方就是用的 sqlmap。哈哈哈哈哈。