《11招玩转网络安全》之第四招:low级别的DVWA SQL注入
以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注入的更多相关文章
- 《11招玩转网络安全》之第一招:Docker For Docker
玩转黑客那些工具,缺少了虚拟机怎么行,除了用虚拟机虚拟整个系统,Docker也不能缺少,读者只需要知道,Docker只虚拟Linux系统中的某个程序就可以了.本节就来介绍Linux下安装设置Docke ...
- 《11招玩转网络安全》之第五招:DVWA命令注入
首先还是将DVWA的安全级别设置为Low,然后单击DVWA页面左侧的Command Injection按钮. 图5-1 Low级别的命令注入 这个就是最典型的命令注入接口.在文本框中输入一个IP ...
- 《11招玩转网络安全》之第三招:Web暴力破解-Low级别
Docker中启动LocalDVWA容器,准备DVWA环境.在浏览器地址栏输入http://127.0.0.1,中打开DVWA靶机.自动跳转到了http://127.0.0.1/login.php登录 ...
- 11招玩转黑客攻防——用Python,更安全
Python真是无所不能,学习Python,一个暑假就够了 !! 入门Python,从黑客入手最好玩.最简单 !! 今天就推荐一本书<11招玩转网络安全——用Python,更安全> 内网攻 ...
- 玩转Node.js(四)-搭建简单的聊天室
玩转Node.js(四)-搭建简单的聊天室 Nodejs好久没有跟进了,最近想用它搞一个聊天室,然后便偶遇了socket.io这个东东,说是可以用它来简单的实现实时双向的基于事件的通讯机制.我便看了一 ...
- 2018.11.9浪在ACM集训队第四次测试赛
2018.11.9浪在ACM集训队第四次测试赛 整理人:朱远迪 A 生活大爆炸版 石头剪刀布 参考博客:[1] 刘凯 B 联合权值 参考博客: [1]田玉康 ...
- Mac太卡了怎么办?用CleanMyMac四招让它飞起来
许多小伙伴使用Mac后都反馈电脑不如想象中的流畅,甚至有点卡顿的现象,原因可能是因为无用的应用占据了过多的内存,或者是系统盘垃圾过多,导致的电脑卡顿现象. 今天小编教给大家几招,让自己的Mac能够一键 ...
- SQL注入过WAF(11.4 第三十三天)
WAF是什么? Web应用防护系统(也称:网站应用级入侵防御系统.英文:Web Application Firewall,简称: WAF).也叫Web防火墙,主要是对Web特有入侵方式的加强防护,如D ...
- MySql(四)SQL注入
MySql(四)SQL注入 一.SQL注入简介 1.1 SQL注入流程 1.2 SQL注入的产生过程 1.2.1 构造动态字符串 转义字符处理不当 类型处理不当 查询语句组装不当 错误处理不当 多个提 ...
随机推荐
- 猴子选大王 (约瑟夫环)(c#)
猴子选大王问题: 一堆猴子都有编号,编号是1,2,3 ...m ,这群猴子(m个)按照1到m的顺序围坐一圈, 从第1开始数,每数到第n个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子, ...
- LeetCode算法题-Shortest Completing Word(Java实现)
这是悦乐书的第309次更新,第330篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第178题(顺位题号是748).从给定的字典单词中查找最小长度单词,其中包含字符串lic ...
- 使用bootstrap的dropdown部件时报错:error:Bootstrap dropdown require Popper.js
前言:前端小白一枚,刚注册博客,先发个学习过程中新碰到小问题试试水吧~ 摘要:最近在学习bootstrap,偶然碰到了一个小问题,bootstrap网站也没有做过多的解释,今天分享给大家. 问题描述: ...
- C#:对字符串的各种处理
字符串截取 SubString OR Remove string str3 = "123abc456"; //str3 = str3.Substring(0, i); //从左边开 ...
- ASP.NET Core 使用 Google 验证码(Google reCAPTCHA)
关心最多的问题,不FQ能不能用,答案是能.Google官方提供额外的域名来提供服务,国内可以正常使用. 一. 前言 验证码在我们实际的生活场景中非常常见,可以防止恶意破解密码.刷票.论坛灌水.刷注册等 ...
- jeecg字典表—报表配置(popup弹框)
新建字典表 录入字典数据 新建报表配置 新建用于popup的表 字典Code中对应,用户接受popup返回的字段(按顺序写) 结果校验
- day12(表达式,推导式,名称空间与作用域,函数的嵌套定义)
一,复习 # 字符串的比较 # -- 按照从左往右比较每一个字符,通过字符对应的ascll进行比较 # print('a' > 'A') #True # print('ac' > 'ab' ...
- nginx基础之【study one】
Nginx是种代理服务器,即可以作为反向代理服务器.邮件服务器等HTTP服务器,支持很多第三方模块扩展,如GZip.SSL.FastCGI. 最常用的功能有Http反向代理.负载均衡和Web缓存: 1 ...
- Idea在@Autowired注入时报错
Could not autowire. No beans of 'UserDao' type found 如图,是因为idea检测能力太强,一旦没有找到实现类就会报错,但是我试了,这里其实是注入进来了 ...
- Fiddle Proxy
1.抓包原理 Fiddler是类似代理服务器的形式工作,它能够记录所有你的电脑和互联网之间的http(S)通讯,可以查看.修改所有的“进出”的数据.使用代理地址:127.0.0.1, 默认端口:888 ...