[SUCTF 2019]EasySQL 1 Writeup(超级详细)

本文章是该系列的第三篇,同样涉及到基础sql注入原理。
首先我们能看到的就是一个输入框,直接告诉了你注入点。

做了一些简单的测试,直接过滤了from、union、extractvalue、PREPARE等关键字,回显提示:NONONO!

前面的那道sql我还是讲的比较中规中矩,这道sql骚一点。

先讲讲我的第一种玩法:
首先手工盲注嘛,会发现连sleep等都全部过滤掉了,而且你输入数字的时候回显是:

Array ( [0] => 1 )

输入字符的时候啥也不回显。
有经验的师傅这个时候其实就懂得要放弃布尔盲注、时间盲注了。
这种格式很明显是要你搞后端代码,他到底怎么写的呢?
那就很有趣了。
其实你应该推断出一个基本事实:
他的后端既然能做到数字回显字母不回显,说明有一个 或 结构,而且不直接回显flag,但作为一道题目,from一定是from flag。
所以猜测后端:

select $_POST['query'] || flag from flag

上面只是个猜测啊。。。
可能不是flag是Flag,也可能from 别的地方。

但假设是这样的结构我们做一下。||是肯定有的。
那我们该怎么做?其实payload很简单:

*1

直接回显flag。
做出来过后我去看了别的wp,貌似师傅们最简单的做法就是这个,但没有解释为什么输入上述语句能得到flag回显,或者怎么就等同于:

select *,1 from flag

我们先讲第二个问题,为啥我这样写payload就等同下面的语句?
你想想这个结构。。。

1 || flag

这。。。短路语法啊。。
返回的就是1嘛。。。。
所以我们成功实现拼接:

select *,1 from flag

select 1 from 的意思其实是建立一个临时列,这个列的所有初始值都被设为1。

关键就在前面的 * 了。
所以师傅们别只拘泥于 ‘ 的布尔和 sleep的时间盲注了。。。。

第二种做法:堆叠注入
有趣的是这里没有过滤databases、show。
我们构建payload:

1;show databases;

这里就别来什么引号和#了,人家既然后端代码拼凑了,就算猜不出来也知道不用啥#、`。。。。

因为我们的目的是合理插入语句并执行,他一定有select、from并且没有过滤databases这些关键字,那肯定直接注就行了。

然后我们得到回显:

Array ( [0] => 1 ) Array ( [0] => ctf ) Array ( [0] => ctftraining ) Array ( [0] => information_schema ) Array ( [0] => mysql ) Array ( [0] => performance_schema ) Array ( [0] => test )

同理我们show tables也行:
payload:1;show tables;
回显也很简单:

Array ( [0] => 1 ) Array ( [0] => Flag )

但是show columns from Flag就不行。

只是一个正常的

Array ( [0] => 1 )

那这样猜出 || flag from Flag不是更没有难度了么。。。。

同上,搞定。

第三种是看人家wp学来的,但是这个用法之前就很熟悉,只是这道题没想到那么麻烦地去做罢了。。

先上payload:
1;set sql_mode=pipes_as_concat;select 1
其实这个不用百度。。。。
你直接看这英语意思:

pipes_as_concat

就是把 || 设置成了 concat函数呗。。。
这也是猜出了后端代码的。

但是要注意分号隔断了前面的命令,所以要再次添加select!!

上面那句执行是:

select concat(1,flag) from Flag

搞定。

难度:

简单

知识点:

后端代码猜测

1 || ** 类语句理解

select 1 from 类语句理解

set sql_mode = pipes_as_concat 命令理解(为什么没有过滤set、concat的原因)

iscc2015是国际信号与通信会议(International Symposium on Communication and Information Technologies)的官方writeup,在这个writeup中,主要回顾了iscc2015会议的主要内容和成果。 iscc2015会议是由IEEE(Institute of Electrical and Electronics Engineers)主办的,旨在聚集来自全球的学者、研究人员和专业人士,共同探讨和交流关于通信和信息技术领域的最新研究和发展。 这个writeup首先介绍了iscc2015会议的背景和目标,提及了该会议为促进学术界和工业界之间的合作、创新和知识交流所做的努力。接着,该writeup详细描述了iscc2015会议的主要议题,包括通信网络、无线通信、数据通信和网络安全等方面。此外,还列举了一些重要的研究课题和领域,如物联网、云计算、移动通信和多媒体通信等。 iscc2015的writeup还总结了会议期间的重要活动和成果。这些活动包括学术论文的研讨会和展示、专题演讲、研讨会和研究项目的发布等。会议期间,各个领域的专家和学者积极参与并互相交流了关于通信和信息技术领域的最新研究成果和创新理念。 最后,iscc2015的官方writeup总结了会议的收获和影响。该会议为全球通信和信息技术领域的研究人员和专业人士提供了一个交流和合作的平台,推动了相关领域的发展和创新。此外,与会者还从中获得了有关新技术、新方法和最佳实践的信息和经验。 总之,iscc2015官方writeup回顾了这个国际会议的主要内容和成果,强调了其在通信和信息技术领域的重要性和影响。通过促进学术界和工业界之间的交流与合作,这个会议为促进全球通信和信息技术领域的发展做出了贡献。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值