bWAPP之SQL injection-low等级

天气有点冷,无法及时更新,望见谅。

今天要跟大家学习的SQL注入,如果有同学以前接触过网站攻防的应该已经知道这是什么的了,没接触过的同学,没关系,我们今天就来学习这个。

什么是SQL注入

SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。

要想学习SQL注入,一定要熟悉SQL语法,可以去这几个地方学习:

http://www.w3school.com.cn/sql/sql_select.asp

主要学的是SQL语法中select语句的内容,当然,其他的也要熟悉。

实验机IP:

118.89.17.134

实验题目:

bWAPP之SQL Injection (GET/Search)

bWAPP之SQL Injection (GET/Select)

都是通过GET请求方法的

实验内容:

0x01:SQL injection(GET/Search)

可以看到,这是一个提供搜索网站内容的搜索框,基本上很多网站都会有这个功能。如果没有做好防护措施的话,很容易被入侵的。接下来教大家怎么手工找这个SQL注入漏洞,并且进行入侵,

0x02:分析一下网站的后台源码

主要源代码:

可以看到,后台对输入的值没有进行任何的过滤就直接对数据库进行查询了,这是个致命的漏洞。怎么进行防护,我们以后的课程再说,就是这个平台的high级别的方法。

0x03:测试分析

在输入框内输入一些数字,点击搜索

什么都没有出来。

网址栏:

http://118.89.17.134/sqli_1.php?title=1&action=search

我们再输入一些字符,输入一个e,点击搜索

可以看到出现很多内容,只要Title栏中带e的都会显示出来。

网址栏:

http://118.89.17.134/sqli_1.php?title=e&action=search

这样我们可以分析得出这里是一个字符型的get请求。

0x04:测试漏洞

接下来我们进行测试这里是否存在SQL注入漏洞

常用的方法:

输入:

点击搜索后

报错了,说明很大可能存在SQL注入漏洞了。

再用or大法测试一下(因为是字符型的,数字型就用and)

输入:

这里我们就不要用一个e了,用一个经常出现的the。

or 1=1 是一个恒等式

# 是MySQL语法中注释符,把 ' 注释掉

页面正常回显。

再输入:

or 1=2 是一个恒不等式

发现无法正常进行查询回显。

说明,这里确实存在SQL注入漏洞。

0x05:爆字段(字段就是这个数据表中的列)

使用的方法:

输入:

报错,说明字段数少于10

再输入:

这是个正常页面,表示没查到信息,没有爆出错误,说明字段数大于5小于10。

再输入:

8也报错,小于8

再输入:

发现没有报错,8报错,7没报错,说明字段数就是7了。

0x06:爆表(即获取当前数据表)

使用的技术

输入:

这个1到7就是我们查出来这个表有的列

我们可以看到,出现了几个数字2、3、5、4

把一些内置函数替换这几个数字,会得出我们想要的东西。

例如

查看当前数据库名:

输入:

我们将2替换成database()这个函数

可以看到原来Title栏的2变成了我们要查的当前数据库的名称bWAPP。

相关函数

这些函数,你们自己都尝试去替换里面的数字,一次性替换几个也行,只要这些数字都是我们利用联合查询查到的数字就行。

我查看MySQL的版本号和当前数据库名:

输入:

可以看到在Release栏出现MySQL的版本5.547。

暴数据表

输入:

可以看到,爆出了5个表,其中users表是一个比较重要的表,也是值得我们注意的表。

0x07:获取后台账户用户名和密码

先查看users表的所有的列的信息

输入:

其中的login和password,应该是我们有我们想要的东西。

那我们就去查出它们的信息

输入:

在Title和Release栏把它们对应的账号和密码爆出了,其中密码是经过md5加密,我们需要去解密

去这个网站可以解出一些MD5加密的密码

ok,我们已经获取了所有我们想要的内容,只要找到后台,我们就可以以管理员的身份去控制这个网站

1x01:bWAPP之SQL Injection (GET/Select)

可以看到,这是个选择框,可以选择去查询,不同的人名出来不同的信息,我们是无法框内输入东西的,就无法安装上面的方法在输入框内直接进行注入。

1x02:测试

我们选择iron man,点击go

出来了iron man 的信息,接下来我们不要在留意这里,把目光转向到浏览器的网址栏去

因为是get请求的,所以我们可以在地址栏中看到很多信息。在这里的话。

movie应该对应的是我们选择人名

action就是按钮go了。

movie=2,这个关键,说明这可能是个数字型的。

1x03:漏洞测试

利用的还是那两个大法

这次我们要在地址栏进行修改,在2后面加个'看看

回车,发现报错了,emmmmm,有漏洞!

再来使用and大法测试看看

正确回显

没查到信息。

可以得出,在movie=2这里存在SQL注入漏洞。

1x04:爆字段

可以得到,字段数为7

1x05:爆表

我们先要让movie等于一个数据表中不存在的数,即让它报错,我在这里改成-2,肯定不存在的。这里关键点

查看数据库:

获取数据表:

发现只是爆出一个表blog表,我们要想一次爆出所有表,怎么办呢

获取所有数据表:

我们用了一个group_concat()函数包住table_name

可以看到,我们把所有的表都在Title栏中看到了,其中users就是我们想要表了。

1x06:获取数据表的字段信息

其中,login和password的内容是我们想要的。

1x07:获取账号和密码

可以看到,账号和密码了。

完结

今天,就这两个,是很重要的,希望大家能好好动动手,做一下笔记。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180202G1IHVP00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券