DVWA 安装使用 & SQL注入学习心得(一)



DVWA 环境搭建和安装简易使用

  1. 下载安装phpstudy,这部分不用说了,肯定大家都有,或者安装过。在浏览器输入127.0.0.1,测试一下。
  2. 官网下载DVWA http://www.dvwa.co.uk ,解压后放在phpstudy的www目录下。
  3. 此时mysql的密码还是空,登录的时候会提示不能空,可以从phpstudy的界面【其他选项菜单】->【My SQL工具】->【重置密码】。
  4. 将DVWA/confing下的config.inc.php.dist修改为config.inc.php,找到其中的db_password的对应值改为刚设置的。
  5. 浏览器输入127.0.0.1/DVWA,出现登录界面,账户名和密码分别是:admin和password。


DVWA的简介

首先,DVWA有多个模块,涉及网络安全的方方面面,其次,代码等级分为Low,Medium,High,Impossible四个等级,在官方介绍中有提到High难度跟ctf接近。

因为研究生阶段即将开始网安的学习,所以好好研究DVWA成了开学前给自己的重要任务。接下来将针对各个模块进行学习笔记的记录,因为是从头学,所以难免啰嗦。

这篇文章只是针对我在学习研究DVWA过程中学到的知识点,和遇到的困难,有不对的地方还请大神不吝赐教。



一、SQL注入

需要注意两部分:第一,右下角有查看源代码的按钮,对于分析四个难度的区别很有帮助;第二,从我目前的知识水平觉得,SQL注入需要实战经验,所以接下来的笔记仅仅是沿着车辙,按图索骥的学习。

【1】low

第一步,习惯上输入1,可以看到返回对应1的数据库中的内容,而且输出三行,分别是

ID:1

First name:xxx

Surname:xxx

具体内容不管,总之第一行是输入的内容,原封不动显示了,二三行是可以我们直接用来显式显示的内容栏。

第二步,分别输入1 and 1 = 1,和1 and 1 = 2;【这里我之前不理解,现在自己的理解是:这一步,可以看输出内容,进而判断是否存在注入点,因为输出结果都一样,所以源代码一定是没有对输入内容进行判断,所以,应该是存在注入点的】

第三步,分别输入1 ‘and 1=1#,和1 ‘and 1=2#;【此时 ‘ 和 # 为第一个1(id)形成了闭合】到这里,根据输出内容,可以断定,存在注入点了。

第四步,1 ‘or 1=1 #,可以爆出所有内容,也就是有五个用户,这一步我是为了验证前几步的观点,下面就是暴库,搞到密码。

第五步,暴库:关于这一步,其实有很多知识点,我还没怎么入门,留着一个专门的坑整理这部分,已下是测试过常用的部分

  • 1‘ union select 1,database()# 爆出数据库名称:dvwa
  • 1 ‘UNION ALL SELECT version(),1# 爆出运行的mysql版本
  • 1 ‘UNION ALL SELECT table_name,2 FROM information_schema.tables# 爆出所有表名(此时是所有库里的)
  • 1‘ union select 1,table_name from information_schema.tables where TABLE_SCHEMA=‘dvwa‘# 爆出所有表名(dvwa库里的)
  • 1‘ union select 1,column_name from information_schema.columns where table_name=‘users‘# 根据爆出的表,去查找所有列
  • 1‘ union select user,password from users# 根据所有的列名,查找需要的对应的内容(这里我把那两个显式的输出分别输出user,password)

总结:到这里low等级注入攻击结束,已经得到需要的全部密码了,先用单引号和and测试是否有注入点,然后暴库,根据库暴表,根据表暴列,根据列找到所需的所有内容。

【2】medium

第一步,分析,medium级别是一个下拉列表,当改变输入时,网址http://127.0.0.1/dvwa/vulnerabilities/sqli/#,可见多了#,但是无论怎么改网址都不变,所以应该不是get型,而是post型。

第二步,用hackbar测试一下(这里留一个关于hackbar的坑),在post中输入 id=3&Submit=Submit,运行发现,输出正确,post型注入可行!

第三步,这时候就已经跟low等级一样了,在id=之后输入注入查询代码即可,注意此时 ‘ 和 # 提示错误,推测是源代码进行了处理,所以去掉继续尝试,可行!到这里medium就解决了

总结:难度主要体现在下拉列表上和输入检查上,可以通过工具避开,其他原理跟low一样,除了hackbar还有burp suite也可以实现,这里留着之后专门再研究这两个工具,留坑

【3】high

high等级很奇怪,我发现方法跟low完全一样,唯一的问题是,change id需要从新的窗口输入,输入内容上跟low完全一样。暂时还没明白跟low等级的区别。留坑对四个等级源代码进行对比分析

【4】impossible

impossible等级用的pdo,目前貌似是没法注入



推荐两篇博客,我感觉写的非常好!

【总结】MYSQL注入 - Carrypan - 博客园

史上最完整的MySQL注入 - i春秋学院 - 博客园

以上,接下来是SQL盲注的的部分,同时一边填上面的坑。

原文地址:https://www.cnblogs.com/wayne-tao/p/11006771.html

时间: 2024-10-10 07:08:41

DVWA 安装使用 & SQL注入学习心得(一)的相关文章

简单的SQL注入学习

引贴: http://blog.163.com/lucia_gagaga/blog/static/26476801920168184648754/ 首先需要编写一个php页面,讲php页面放入/opt/lampp/htdocs目录下: 解释一下这个页面: 1.通过if语句判断变量是否初始化 2.if语句中通过mysql_connect()函数连接数据库 3.连接数据库成功后,选择一个数据库 4.选择完数据库后执行一条mysql查询 5.进行查询结果的处理 6.使用echo讲查询结果输出,便于查看

sql注入学习经验

本人是一名渗透新手,信息安全专业的学生一直在学习关于安全方面的理论学习,主要进行的是网站的搭建,但自从接触了web渗透之后才发现自己以前搭建的网站真是漏洞百出,从而也爱上了渗透的学习,今天就和大家分享一下我的学习成果,有什么不好的地方欢迎大家提意见! 今天主要是讲一讲sql注入,sql注入的原理和危害就不多说了,大家百度一下就可以了,给大家讲一讲我的实践经验. sql注入的方法(get参数)     说复杂了没用其实就两种,工具注入与手工注入 (一)选择网站是否能进行sql注入(一般使用火狐浏览

sql注入学习笔记(1)

把学习到的sql注入的一点知识记录下来 更改默认的sqlmap脱库保存的路径  --output-dir F:\ Substr(字符串,起始位置,字符数)   (初始为1不是0) 这里有示例 https://www.1keydata.com/cn/sql/sql-substring.php 通常配合ascii函数判断出字符的值ascii(substr((select database()),1,1))) > 100 二分法(又叫折半法)可以减少猜测的量 Length()   判断长度 AND (

SQL注入学习资料总结

转载自:https://bbs.ichunqiu.com/thread-12105-1-1.html  什么是SQL注入 SQL注入基本介绍 结构化查询语言(Structured Query Language,缩写:SQL),是一种特殊的编程语言,用于数据库中的标准数据查询语言.1986年10月,美国国家标准学会对SQL进行规范后,以此作为关系式数据库管理系统的标准语言(ANSI X3. 135-1986),1987年得到国际标准组织的支持下成为国际标准.不过各种通行的数据库系统在其实践过程中都

DVWA篇之SQL注入

SQL Injection本文需要的实验环境及搭建请访问:DVWA篇之环境搭建 SQL注入就是通过把sql语句插入到web表单提交或输入页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令 Sql注入的一般流程: 1.判断注入点2.判断注入类型3.判断数据库类型4.获取数据库权限,提权 Low级别我们先来分析一下源码,同时再一步步操作,验证我们的分析源码关键部分:我们可以看到,当进行查询参数id的时候没有进行任何过滤,很明显存在注入漏洞的.1. 这时我们试试判断注入点可以输入单引号看是否

简单sql注入学习

sql注入是什么? 所谓SQL注入,就是通过把SQL命令插入到Web表单提 交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.具体来说,它是利用现有应用程序,将(恶意)的SQL命令注入到后台数据 库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句.比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到sql注入式攻击. sql注入漏洞的

SQL注入学习(二)

SQL注入点判断 ?id=35 +1/-1  查看页面是否发生变化 select * from tbName where id=$id 1.?id=35'数字后面加上[' or '' or )]来判断是字符型,还是数字型,如果有报错.有回显的话,用报错注入 select * from tbName where id=35' near ''' at line 1 数字型 near ''2'' LIMIT 0,1' at line 1 字符型 2.?id=35 and 1=1 // ?id=35 a

sql注入学习小结

/* 转载请注明出处,By:珍惜少年时 小知识,只是放在博客吃饭时无聊看看,大牛勿喷. */ 珍惜少年时博客,专注网络安全 web渗透测试 00x1爆所有库: mysql> select schema_name from information_schema.schemata; +--------------------+ | schema_name | +--------------------+ | information_schema | | challenges | | dvwa | |

Sql 注入 学习笔记

以下是MSDN Magazine 里面的一段文章: http://msdn.microsoft.com/zh-cn/magazine/cc163523.aspx 我很好奇这样到底能不能够注入SQL, 所以我建了个 console 程序 static void Main(string[] args) { SqlConnection conn new SqlConnection(); conn.Open(); string commandtext = "exec SetPassword 'admin