代码编织梦想

前言

  在开始之前,先说一下我对SQL注入的原理的一些理解:
SQL注入
  是在输入的字符串中注入了SQL指令,在设计不良的程序当中忽略了检查,那么这些注入进去的指令就会被数据库服务器误认为是正常的SQL指令而执行,因此遭到数据泄漏或者数据的破坏。
  攻击者可以从数据库中获取敏感数据,造成大量敏感信息泄露;修改数据库内容,造成网页篡改;执行数据库管理操作,例如写入webshell,在某些情况下能够执行操作系统命令,造成服务器被控制;或者攻击者直接删除数据库破坏数据,造成系统瘫痪。
  其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统。

一、Low级别

  首先打开DVWA靶场,选择SQL Injection模块。

Tips:我在这个攻击过程里面用到了一个火狐浏览器的小插件,叫Max HackBar,用起来很方便。

在这里插入图片描述
  我这里在User ID里输入1,按下F12,选中Max HacKBar插件,点Load URL就可以将URL抓取下来,可以在里面对参数进行修改,点Execution执行。
在这里插入图片描述
  sql注入的步骤,第一步先找到注入点,然后判断注入的类型,接着就是常规的流程,暴库,表等等数据库信息。
  具体详细步骤可以参考博客:
   DVWA之SQL注入的步骤.

  废话不多说,回归正题!

union注入

  这里不得不提下union注入,它的意思就是前面有一个查询语句,联合查询另一个查询语句。这里可以用联合查询把它的数据库整个查出来。
  我们可以查看它的源代码,知道他查询的字段数是两个,分别是first_name和Last_name。

在这里插入图片描述

判断字段数

  但是如果我们不能看源码的情况下,就可以用order by语句来判断它查询的字段数有多少。
在这里插入图片描述
用二分法查找,一直到order by 2
在这里插入图片描述
  输入id=1 ' union select 133331,33333222 --这里的两个部分可以填入任意的阿拉伯数字,应情况而定,也有可能是字符,也可以用null。
在这里插入图片描述
  这个时候可以在两个位置输入要查询的东西,比如说user()数据库用户名,version()版本,数据库名database().
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

查表名

  输入:1' union select table_name,2 from information_schema.tables where table_schema = 'dvwa'--

在这里插入图片描述

  关于information_schema的相关说明这里不做详细讲解,请参考博文:mysql5以上默认在数据库中存放一个information_schema 的数据库.

  可能有人在这里会出现,Illegal mix of collations for operation ‘UNION’ 的报错,不用怕,把Mysql的版本换成8.0就解决了,具体原因是编码问题,可以自己百度。不会换可参考博文:
Illegal mix of collations for operation ‘UNION‘报错解决办法.

  从获取到的信息中可以看到有admin,guestbook,users三个表,其中有价值的我们猜是users的表。接下来我们就是要把users表里的字段查出来。

查字段

  输入:1'union select column_name,2 from information_schema.columns where table_name = 'users'--
在这里插入图片描述

  从获取的信息中可以看到敏感关键字password和user,下一步就是要把字段的内容给查出来。
  输入:1'union select user,password from users--

在这里插入图片描述

二、Medium级别

  到了中级,发现UserID变成了下拉选项的形式,不能输入了,需要借助Burpsuite工具代理,进行抓包修改。
  输入id=1' and 1=1#
在这里插入图片描述

  出现报错:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘’ and 1=1#’ at line 1
单引号’被转义了

  接着输入id=1 and 1=1#,发现是数字型的注入

在这里插入图片描述

  接下来的步骤就和low级的一样了,判断字段数id=1 order by 2#
在这里插入图片描述

  输入id=1 union select user(),database()#暴出数据库和用户

在这里插入图片描述

  输入id=1 union select table_name,2 from information_schema.tables where table_schema=dvwa#暴出表名
在这里插入图片描述

  这里出现一个小问题,找不到dvwa这个值,可能是编码的问题,而且中级里面单引号’是被转义了,所以我们要把’dvwa’改成16进制进行输入:
在这里插入图片描述

  输入id=1 union select group_concat(table_name),2 from information_schema.tables where table_schema=0*64767761#
在这里插入图片描述

  输入id=1 union select group_concat(column_name),2 from information_schema.columns where table_name=0x7573657273 # ,查询users表的字段信息 :
在这里插入图片描述

  最后输入id=1 union select user,password from users#,账号秘密:
在这里插入图片描述

二、High级别

  没什么难度,和low、medium差不多,只是换了种形式,流程还是一样的,注入点,字段数,库,表,字段。
在这里插入图片描述在这里插入图片描述

总结

  通过这个靶场的练习是希望自己对sql注入有更好的理解,自己也有实战过,在src有提交过九个sql注入漏洞,但是和大佬相比我还是太菜了,之所以dvwa靶场的sql注入篇现在才发表是因为自己不记得了,是今天突然想起来了。趁现在有了实战经验,回过头来写,印象也更加深刻。

一些初学疑问

  我自己刚刚入门的时候的一些疑惑(哈哈哈哈哈,从刚开始学到现在已经过去半年了,如果有人也和我刚开始学的时候一样,有这个问题,希望可以帮到你)

为什么要加个单引号’,闭合到底是怎么用?

  可能刚开始做的时候很多人都会有这个疑惑,不知道什么时候要用单引号,甚至是双引号,很模糊,这个时候只要把它的查询语句列出来好好捋一捋就很明白了,以这个dvwa low靶场的为例:
SELECT first_name, last_name FROM users WHERE user_id = '$id';
这里的$id就相当于是我们输入的1,2,3,…,如果我们输入1,语句就是
SELECT first_name, last_name FROM users WHERE user_id = '1';
同理,输入1’,语句就是:
SELECT first_name, last_name FROM users WHERE user_id = '1’';
它就会报错,因为有三个引号,所以我们就要注释掉多出来的那个引号,输入1’ --(空格),语句变成:
SELECT first_name, last_name FROM users WHERE user_id = '1’-- ';
红色部分被注释,所以成功执行。

    本站所有文章均为原创,欢迎转载,请注明文章出处: https://blog.csdn.net/weixin_43847838/article/details/115291688.。百度和各类采集站皆不可信,搜索请谨慎鉴别。技术类文章一般都有时效性,本人习惯不定期对自己的博文进行修正和更新,因此请访问出处以查看本文的最新版本。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43847838/article/details/115291688

web安全与防御---2.dvwa之sql注入-爱代码爱编程

首先登录DVWA主页: 1、修改安全级别为LOW级(第一次玩别打脸),如图中DVWA Security页面中。 2、进入SQL Injection页面,出错了。(心里想着这DVWA是官网下的不至于玩不了吧。。) 网页错误提示:Parse error: syntax error, unexpected '['in C:\xampp\htdocs\D

dvwa 之命令注入(command injection)_lujie_1996的博客-爱代码爱编程_dvwa命令注入

命令注入(Command Injection),是指在某些需要输入数据的位置,还构造了恶意的代码破坏了原先的语句结构。而系统缺少有效的过滤,最终达到破坏数据、信息泄露甚至掌控电脑的目的。许多内容管理系统CMS存在命令注入漏洞。   解决乱码问题 在文本框中输入”ip address”后结果显示为乱码,如下图所示。 解决此问题的方法:在DVWA

dvwa中 利用反射型xss获取cookie进行会话的劫持演示_领悟。的博客-爱代码爱编程

首先打开dvwa,设置安全等级为low: 输入<script>alert(11)</script>证明弹窗: 编写获取cookie的代码cookie.php,并将其放在一个web服务器上,这里我就放在http://127.0.0.1/dvwa/下面: 构造如下URL,并发送给被攻击者: 原始URL: http://locat

dvwa 弱cookie模块攻略心得_zikun_96的博客-爱代码爱编程_dvwa的cookie

求生欲很强的前言╭(╯^╰)╮  各位大佬们,我只是个小白,如果文章内有写的不对的地方请告诉我,但请不要喷。。。不要喷,我们都是文明人,不做花洒,不做喷子,关爱小白从我做起 Orz     弱cookie 这个模块貌似(不确定)1.9初期就有了,但是到目前为止网上都没有什么攻略。可能是大佬们觉得比较简单吧。 这个模块只要我们自己能找到cooki

对dvwa进行sql注入_萌神奉孝君的博客-爱代码爱编程

1.判断是否有注入漏洞 打开DVWA,在SQL注入中输入1,返回正常。 输入1’,报错,返回 You have an error in your SQL syntax; check the manual that cor

DVWA--SQL注入-爱代码爱编程

SQL注入原理就是通过sql命令插入到web表单递交或输入域名页面请求的查询字符串,最终达到欺骗服务器执行恶意的SDL命令。具体来说,它是利用现有应用程序,将恶意的SQL命令注入到后台数据库引擎执行的能力,它可以通过在WEB表单中输入恶意SQL语句得到包含漏洞的网站数据库,而不是按照设计者意图去执行。SQL注入类型按照数据提交的方式: GET注入、POST

dvwa sql注入-爱代码爱编程

dvwa sql注入 low 一、判断sql是数字型注入还是字符型注入 1.输入1 2.输入1’和1’# 输入1’ 报错 输入1’# 不报错 此处判断User ID是字符型的,在sql语句中有 ’ ’ 包裹。 3.检验是否可注入,输入1’ or 1=1# 1后面的 ’ 闭合了id字段,or 1=1 使得where判

5. 代码执行命令执行个人笔记总结-爱代码爱编程

原理 当应用程序需要调用一些外部程序去处理内容,就会用到一些执行系统命令的函数,如php的system、exec、shell_exec等,当用户可以控制命令执行函数中的参数时,可将恶意命令注入到正常命令中,造成命令执行攻击。 命令执行漏洞:直接调用操作系统命令 代码执行漏洞:靠执行脚本代码调用操作系统命令 命令执行原理:操作系统中,&, |, |

DVWA-sql注入漏洞详解-爱代码爱编程

1、判断是否存在SQL注入点 DVWA安全级别为“Low” (1)判断是否存在漏洞 Id值输入为1,发现正常显示 Id值输入为1’,发现报错 判断存在sql注入漏洞 (2)判断是否存在数字型漏洞 输入1 and 1=1 显示正常 输入1 and 1=2,显示仍然正常 故,判断不存在数字型漏洞 (3)判断是否存在字符型漏洞 输入1’ and

DVWA通关--SQL注入(SQL Injection)-爱代码爱编程

目录 LOW 通关步骤 一、手工注入 二、sqlmap注入 代码分析 MEDIUM 通关步骤 方法一、手工注入 方法二、sqlmap注入 代码分析 HIGH 通关步骤 方法一、手工注入 方法二、sqlmap注入 代码分析 IMPOSSIBLE 代码分析 总结 A.有回显的手工SQL注入步骤 B.sqlmap注入 C

对dvwa进行sql注入_xampp怎么获取表中数据-爱代码爱编程

我用的是在VMware下的虚拟机,在这就不说如何安装kali和win7了,各位自己去网上找一下大神们的教程,就很容易安装了。(统一说明:为了安全性等各方面考虑,下载软件最好到软件的官网上去下载)我用的系统如下: kali:1