字符型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数据库如 ...
随机推荐
- 前端总结·基础篇·JS(三)arguments、callee、call、apply、bind及函数封装和构造函数
前端总结系列 前端总结·基础篇·CSS(一)布局 前端总结·基础篇·CSS(二)视觉 前端总结·基础篇·CSS(三)补充 前端总结·基础篇·JS(一)原型.原型链.构造函数和字符串(String) 前 ...
- TCP协议设计原理
TCP协议设计原理 最近去了解TCP协议,发现这是一个特别值得深思的协议.在本篇博客中,不会长篇大论的给大家介绍TCP协议特点.包头格式以及TCP的连接和断开等基本原理,而是会带大家深入理解为什么要这 ...
- springmvc基础学习2---简单配置文件
1:web文件 2:spring-mvc.xml配置文件
- mybatis基础学习2---(resultType和resultMap的用法和区别)和setting的用法
1:resultType和resultMap两者只能有一个成立 2:resultMap可以解决复杂查询时的映射问题 3:使用 resultType使用 ------------------------ ...
- 在SSRS的每一页重复显示table header
现在在做一个关于SSRS报表展示的项目,但是我困顿在如何在table的每一页让table header重复显示.因为我在table属性中勾选了"Report header columns o ...
- 微信JS初始化--微信JS系列文章(一)
概述 微信JS的使用方法,官方文档已经描述得比较清楚了,这里我就不重复介绍了,本文意在提供现成的代码,供大家快速迭代开发,以及补充一下官方文档描述得不够清楚的地方,避免大家踩相同的坑. 微信JS初始化 ...
- 关于微信小程序图片失真的解决方案
今天来说一说 关于微信小程序的图片失真问题的解决,微信小程序的image标签要设置其宽高,不然图片若宽高过大会撑开原始图片大小的区域:如下 但是宽高设置固定了会导致有些图片和规定显示图片大小的比例不一 ...
- PRINCE2 有级别吗?
PRINCE2是分级别的,有基础级和专业级两个级别 Foundation基础级考试没有报考条件限制, 完全根据学员掌握知识的能力和实际工作经验 Practitioner 专业级考试不可越级 1.持有P ...
- XML和JSON两种数据交换格式的比较
在web开发领域,主要的数据交换格式有XML和JSON,对于在 Ajax开发中,是选择XML还是JSON,一直存在着争议,个人还是比较倾向于JSON的.一般都输出Json不输出xml,原因就是因为 x ...
- 测试开发Python培训:抓取新浪微博抓取数据-技术篇
测试开发Python培训:抓取新浪微博抓取数据-技术篇 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.在poptest的se ...