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

web——[SUCTF 2019]EasySQL1——堆叠注入

这个题主要是讲述了堆叠注入的用法,来复现一下

什么是堆叠注入

堆叠注入:将多条SQL语句放在一起,并用分号;隔开。

1.查看数据库的名称

查看数据库名称

1;show databases;

发现有名称为ctftraining的数据库

2.对表进行查询

1;show tables;

发现有flag的表,说明东西就在flag中

3.此时我们想到,开始时我们输入1有会显,我们不妨再尝试输入0试试。

没有回显

字母也没有回显

输入abc发现依然没有回显。这时我们可以总结出一条规律,输入非0数字--有会显,输入0或字母--没有回显,我们由此可以猜测后端代码含有 ||或运算符。

补充:|| 或or 运算符讲解:
select command1 || command2 

情况一:若command1为非0数字,则结果为1。

情况二:若command1为0或字母,command2为非0数字,则结果为1。

情况三:command1和command2都不为非0数字,则结果为0。
                        
原文链接:https://blog.csdn.net/2302_79800344/article/details/136268777

方法一:使用 sql_mode 中的 PIPES_AS_CONCAT 函数。

PIPES_AS_CONCAT:将 || 或运算符 转换为 连接字符,即将||前后拼接到一起。

select 1 || flag from Flag的意思将变成 先查询1 再查询 flag,而不是查询1flag,只是查询的结果会拼接到一起,不要弄混淆了。

所以查询语句如下:

1;sql_mode=PIPES_AS_CONCAT;select 1

方法二:利用非预期漏洞获取flag。

1、非预期漏洞的概念:

若输入1,1。那么sql语句就变成了 select 1, 1 || flag from Flag。其中由 [1] 和 [1 || flag] 两部分组成,而非 [1,1] || [flag]。非预期漏洞是利用数据库对符号判断的不准确形成的漏洞。

输入 *,1 后,sql语句就变成了 select * , 1 || flag from Flag。

其中分为两部分: (1) select * from Flag(2) select 1 || flag from Flag。

select * from Flag 通过查看表Flag中的所有数据可以 get到flag。


http://www.mrgr.cn/news/67279.html

相关文章:

  • 制作python的Dockerfile
  • 江协科技STM32学习- P28 USART串口数据包
  • 初学Java基础---Day21---正则表达式,日期类,Math类,Random类,System类,Runtime类,大数值运算类,
  • MFC图形函数学习06——画椭圆弧线函数
  • 四款主流的3D创作和游戏开发软件的核心特点和关系
  • 一个最简单的网络编程
  • 链表拆分与快慢指针相关算法题
  • Go语言基础语法
  • WebGUI之Gradio:Gradio 5的简介、安装和使用方法、案例应用之详细攻略
  • Cerebellum:浏览器 AI 助手,基于 Claude 3.5 Sonnet 和 Selenium WebDriver 执行网页自动化任务
  • 二进制流文件下载和预览
  • SpringBoot3集成Junit5
  • C++ 多态
  • 写歌词的技巧和方法:以情动人,打造感人歌词,妙笔生词AI智能写歌词软件
  • Jest项目实战(2): 项目开发与测试
  • 详解:字符串常量池
  • Linux入门之vim
  • Git超详细笔记包含IDEA整合操作
  • 狐假虎威,数据流图其实很简单
  • 题目练习之二叉树那些事儿
  • Centos7修改默认yum源(ARM架构)(2024年6月30号后)
  • 防火墙|WAF|漏洞|网络安全
  • 信息学奥赛一本通 1395:烦人的幻灯片(slides)
  • Flutter鸿蒙next 中的 Drawer 导航栏
  • 【360】基于springboot的志愿服务管理系统
  • 粒子群优化双向深度学习!PSO-BiTCN-BiGRU-Attention多输入单输出回归预测