Kali学习笔记41:SQL手工注入(3)
前两篇文章都是基于目标系统允许union,order by语句
并且可以读取infomation_schema元数据库
如果遇到的是安全方面做得很好的应用,进行了权限限制,那么我们有什么办法呢?
猜测当前表的列名(字段名):
' and [猜测字段名] is null --
如果结果是:Unknown column '[猜测字段名]' in 'where clause'
说明这个字段不存在
如果结果是没有反应,则证明该字段存在:
比如:' and user is null --
于是我就想到了:是否可以对字段名进行爆破,我从kali中搜索下有没有相关的字典:

我随便选用一个字典,当我查看其中内容时候发现有些是#开头的
实际中,应该把这些#开头的过滤掉,因为可能会影响结果

现在的column.txt应该就是我们需要的字典
利用Burp的Intruder:设置变量

然后加载刚才的字典:

不需要对payload编码:

然后就可以开始了:

通过观察发现,长度为4000多的返回正常的页面
进一步排序,就可以发现具体的字段名:

类似地,我们也可以猜测当前表的表名:
' and [猜测表名].user is null --
为什么是.user呢?因为上边已经成功猜测到了user字段名
如果这个表不存在,那么这个列也不会存在,于是可以猜测表名:
错误情况:

正确情况:什么都不会返回
找到字典进行爆破



成功爆破出users表
类似的思路:可以继续加入:' and [猜测数据库名].[猜测表名].user is null --
就可以猜测出当前数据库名称了
如何猜测当前数据库其他表的表名?
' and (select count(*) from [表名])>0 --

意外收获:库名直接出来了
接下来类似上边的方法,进行爆破

成功猜出guestbook表和users表
继续猜测表中的信息:
‘ or [字段名]='[猜测值]

通过上面的步骤已经成功猜到字段名user了
猜测正确是上面的结果,说明存在user为admin的用户
猜测错误的话:什么都不会返回
这种无脑猜测不太有智慧,我们可以结合其他的语句,比如:
' or user like '%a%
这一句话猜测的是:只要数据库中有user包含字符a的,全部查出来

成功,查到了两个用户
知道用户后就可以进一步猜测密码:URL编码后结果如下
'%20or%20user%3d'admin'%20and%20password%3d'5f4dcc3b5aa765d61d8327deb882cf99
(我对猜测的密码进行了MD5加密)
Kali学习笔记41:SQL手工注入(3)的更多相关文章
- CUBRID学习笔记 41 sql语法之select
cubrid的中sql查询语法 SELECT [ ] [{TO | INTO} ][FROM ] [WHERE ][GROUP BY {col_name | expr} [ASC | DESC], . ...
- CUBRID学习笔记 41 sql语法之groupby 等
cubrid的中sql查询语法groupby GROUP BY ... HAVING Clause 按dept_no分组 SELECT dept_no, avg(sales_amount) FROM ...
- Kali学习笔记42:SQL手工注入(4)
前三篇文章都是在讲发现SQL注入漏洞 如何查询得到所有的信息 那么另一条思路还未尝试过:能否修改数据? 例如这样: '; update users set user='yiqing' where us ...
- 小白日记41:kali渗透测试之Web渗透-SQL手工注入(三)-猜测列名、表名、库名、字段内容,数据库写入
SQL手工注入 靶机:metasploitable(低) 1.当无权读取infomation_schema库[MySQL最重要的源数据库,必须有root权限]/拒绝union.order by语句 ...
- SQL反模式学习笔记21 SQL注入
目标:编写SQL动态查询,防止SQL注入 通常所说的“SQL动态查询”是指将程序中的变量和基本SQL语句拼接成一个完整的查询语句. 反模式:将未经验证的输入作为代码执行 当向SQL查询的字符串中插入别 ...
- 小白日记40:kali渗透测试之Web渗透-SQL手工注入(二)-读取文件、写入文件、反弹shell
SQL手工注入 1.读取文件[load_file函数] ' union SELECT null,load_file('/etc/passwd')--+ burpsuite 2.写入文件 ' unio ...
- 小白日记39:kali渗透测试之Web渗透-SQL手工注入(一)-检测方法
SQL手工注入(一) SQL注入:通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.[SQL注入原理] ##服务端程序将用户输入参数作为查询 ...
- SQL手工注入基础篇
0.前言 本篇博文是对SQL手工注入进行基础知识的讲解,更多进阶知识请参考进阶篇(咕咕),文中有误之处,还请各位师傅指出来.学习本篇之前,请先确保以及掌握了以下知识: 基本的SQL语句 HTTP的GE ...
- 【新手篇】搭建DCN漏洞靶机及简单的SQL手工注入
很多新手小白入门后发现想要学好“网安”技术,除了掌握基础理论知识,更需要经常模拟不同的漏洞环境,但是如果使用外网服务器练习,会存在一定风险,因此能够搭建一个本地的模拟环境去测试漏洞将是一个不错的方案. ...
随机推荐
- selenium对百度进行登录注销
#百度登录退出demo import time from selenium import webdriver from selenium.webdriver.common.action_chains ...
- 公设基础Generic
1# 与泛型相关的一些术语 1.类型参数(type parameter) : EX: List<E> 这里的E就属于List接口的单个类型参数E 2.参数化的类型(parameterize ...
- json格式的中文输出显示
print json.dumps(json.loads(result),ensure_ascii=False)
- SpringBoot中对于异常处理的提供的五种处理方式
1.自定义错误页面 SpringBoot 默认的处理异常机制:SpringBoot默认的已经提供了一套处理异常的机制.一旦程序中出现了异常,SpringBoot会向/error的url发送请求.在Sp ...
- log4j、使用log4j、打印sql日志
添加pom文件依赖 <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifa ...
- FW/IDS/IPS/WAF等安全设备部署方式及优缺点
现在市场上的主流网络安全产品可以分为以下几个大类:1.基础防火墙FW/NGFW类 主要是可实现基本包过滤策略的防火墙,这类是有硬件处理.软件处理等,其主要功能实现是限制对IP:port的访问.基本上的 ...
- 创建线程的一般方式和匿名内部类方式对比——继承thread类,重写run()方法
第一种:继承thread类,重写run()方法 一般方式:Demo01.java /** * 创建线程的第一种方式:继承thread类,重写run()方法 * * @author :liuqi * @ ...
- VS 2013Ultimate 开发过程中遇到的问题——listbox的隐藏问题,combobox.textchanged的中文问题
最近项目有需求,就是把一个combobox让它可以根据用户输入的汉字就行模糊查询出匹配的下拉框内容,很简单,是吧 但是!!!在开发中真是遇到了不少问题呢. 一.实现流程 1)我的实现思维是这样的,先把 ...
- 通过s3cmd上传css文件到s3导致样式加载失败
情景说明: 将css文件上传到aws s3存储桶中,通过浏览器访问页面,发现css文件渲染失败. 通过浏览器工程模式发现css为 Content-Type: text/html,正确的 Content ...
- sqlalchemy 使用
创建连接 # 参数: '数据库类型+数据库驱动名称://用户名:口令@机器地址:端口号/数据库名' from sqlalchemy import create_engine engine = crea ...