字符型SQL注入
字符型SQL注入
很早就基于DVWA实现了字符型的SQL注入,但是一直感觉自己没有理解的特别清楚,这次又看了一下网上的一些讲解,试着总结一下。以下是我的一写浅薄见解,请大家批判着看。
基本原理
看看这条SQL语句
$query="select first_name from users where id='$_GET['id']'";
这句SQL的语句就是基于用户输入的id在users表中找到相应的first_name,正常用户当然会输入例如1,2等等。但是如果有人输入这样的内容呢?
1' union select database() #;
这样的话这句SQL语句就变成了这样
select first_name from users where id='1'unionselect database()#'
这样的话,我们不仅可以得到id=1的first_name,还可以得到当前数据库的相关信息,这是开发人员所没有想到的。以上只是一个简单的SQL注入的例子。
从根本上讲,当开发人员对用户的输入过滤不严,造成了用户可以通过输入SQL语句控制数据库,就会产生SQL注入漏洞。
SQL注入的几个基本步骤
- 确定注入漏洞的类型和存在问题的参数
- 确定字段数
- 分析数据库和数据表的相关信息
- 实施具体攻击
字符型SQL注入
将DVWA安全等级调为low
(1)确定问题参数和漏洞类型
可以看到,在URL中,参数为id,当输入1’时报错,当输入1”时正常显示 ,可以判断问题参数为id,漏洞类型为字符型。
(2)确定字段数
只有确定了字段数,才可以使用union这个关键词连接我们自己的查询语句。可以采用order by来确定字段数
例如:
输入1’ order by 1 #
表示通过第一字段的顺序进行排序,当输入order by x报错时,就说明没有这个字段,就可以得到输出的字段数了。在这个系统中,经过测试,输出字段数为2.

(3)确定数据库和数据表
现在我们已经知道了输出的字段数了,可以使用union这个关键词了。首先试试确定数据得名字,设计如下payload
1’ union select database(),2 #
得到了想要的内容
这个数据库名字就是dvwa。
有了数据库下一步就是确定其中有哪些数据表,我们可以通过mySQL数据库自带的information_schema来知道,这个information_schema就是用来存储mySQL数据库所有信息的数据库。可以看到数据库中有一些数据表
其中有tables数据库,用来存放数据表的信息。插入以下的payload
1’ union select table_name,1 from information_schema.tables where table_schema=’dvwa’ #
得到了数据表
那个users表一看就知道放了不少好东西。。。但是 我们还不知道这个数据表里有哪些字段,这就要用到其中columns这个数据库了。插入如下的payload
1’ union select column_name,2 from information_schema.columns where table_name=’users’ and table_schema=’dvwa’ #
这下得到了好多数据
(4)具体实施攻击手段
user和password这两个字段我们都知道了,那就看看吧
插入如下payload
1’ union select user,password from users #
OK ,get it!
但是不好意思,密码都被md5加密过了,而且md5加密是不可逆的,一些软件可能破解md5值,是做了很大一张数据表,将这么多字符串的md5值和本身列成一条条记录,然后一个个枚举,如果运气不错,你输入的md5值正好在这个表中,那就输出相应的字符串,若果不存在,那就破译失败。这就告诉我们密码不要设那么简单,如果你账户所在的数据库被脱库了,密码设的复杂一点,至少黑客无法直接获取你的密码。
字符型SQL注入的更多相关文章
- 2019-9-9:渗透测试,docker下载dvwa,使用报错型sql注入dvwa
docker下载dvwa镜像,报错型注入dvwa,low级 一,安装并配置docker 1,更新源,apt-get update && apt-get upgrade &&am ...
- [典型漏洞分享]Insert型SQL注入的发现和利用,篡改订单金额
本例中的SQL注入和其它发现的SQL注入的主要区别:1.生成订单接口是一次性的,反复提交无效,因此,此类型的SQL注入比较难通过扫描器发现,需要人工提取和手动测试.2.Insert类型的SQL注入,不 ...
- 挖洞入门_显错型SQL注入
简介:在漏洞盒子挖洞已经有一段时间了,虽说还不是大佬,但技术也有所进步,安全行业就是这样,只有自己动手去做,才能将理论的知识变为个人的经验.本篇文章打算分享一下我在挖显错型SQL注入漏洞过程中的一些个 ...
- 【sqli-labs】 less22 Cookie Injection- Error Based- Double Quotes - string (基于错误的双引号字符型Cookie注入)
注入的过程和less 20 21一样,这次闭合cookie的使用的双引号
- 【sqli-labs】 less21 Cookie Injection- Error Based- complex - string ( 基于错误的复杂的字符型Cookie注入)
这个和less20是一样的,唯一的不同在于添加了括号和使用了base64对cookie进行了编码(因为使用了base64_decode解码函数) admin被编码成了YWRtaW4=但是执行的SQL语 ...
- SQL注入之PHP-MySQL实现手工注入-字符型
SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.具体来说,它是利用现有应用程序,将(恶意的)SQL命令注入到后台数据库引擎 ...
- sql注入1
一.函数 1.version() MYsql版本 2.user() 数据库用户名 3.database() 数据库名 4.@@datadir 数据库路径 5.@@version_compi ...
- 手工检测SQL注入漏洞
SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,具体来说,它是利用现有应用程序将(恶意的)SQL命令注入到后台数据库引擎执 ...
- 网站mysql防止sql注入攻击 3种方法总结
mysql数据库一直以来都遭受到sql注入攻击的影响,很多网站,包括目前的PC端以及手机端都在使用php+mysql数据库这种架构,大多数网站受到的攻击都是与sql注入攻击有关,那么mysql数据库如 ...
随机推荐
- mac下安装nginx问题解决
需要在mac上安装nginx,按照下面的博客链接一步步安装,但是碰到了些问题.下面写一下我的解决方式. (http://stevendu.iteye.com/blog/1535466) 1. 安装PC ...
- mybatis对java自定义注解的使用——入门篇
最近在学习spring和ibatis框架. 以前在天猫实习时做过的一个小项目用到的mybatis,在其使用过程中,不加思索的用了比较原始的一种持久化方式: 在一个包中写一个DAO的接口,在另一个包里面 ...
- Android全局异常捕捉
// 定义自定义捕捉 package com.xiaosw.test; import java.io.File; import java.io.FileOutputStream; import jav ...
- FDG内存分配器笔记
FDG: 大规模并行系统中的动态内存分配器由于需要全局同步(记账) ,导致性能急剧下降. 代码解析 1.superblock 类中包含两个变量,两个函数.默认superblock大小为2048 ite ...
- bing翻译API调用方法
概述 前一段时间,遇到一个需求,需要对文章进行翻译,由于客户公司员工有国内的人员,也有国外的人员,为了照顾国外的同事,客户提出,当用户在手机端发布帖子,需要同时把帖子的内容翻译成英文,方便用户阅读.于 ...
- iOS开发之判断系统版本
if([[UIDevice currentDevice].systemVersion doubleValue]>=7.0) { //是IOS7至以上版本 }else{ //IOS7以下版本 }
- supervisor的集中化管理搭建
1.supervisor很不错,可惜是单机版,所以上github上找了个管理工具supervisord-monitor. github地址: https://github.com/mlazarov/s ...
- C++—动态内存管理之深入探究new和delete
C++中程序存储空间除栈空间和静态区外,每个程序还拥有一个内存池,这部分内存被称为自由空间(free store)或堆(heap).程序用堆来存储动态分配的对象,即,那些程序运行时分配的对象.动态对象 ...
- [敏捷开发实践](2) 用于开发和维持复杂产品的敏捷开发框架Scrum
[敏捷开发实践](2) 用于开发和维持复杂产品的敏捷开发框架Scrum 1,Scrum概述 上篇中提到敏捷开发有两种主流的方法,一个是XP,另一个是Scrum,本篇简要介绍Scrum方法.Scrum是 ...
- AutoMapper.RegExtension[.NET Core版本] 介绍
Technorati 标签: AutoMapper.RegExtension,AutoMapper.RegExtension .NET CORE AutoMapper.RegExtension 为一个 ...