[suctf 2019]EasySQL

[suctf 2019]EasySQL

打开感觉是一道sql注入的题,发现输入数字 非0都会返回值 

 使用Sql堆叠注入查看信息,先用show指令查看数据库:1;show databases;

 然后查看表名,

 感觉要出来了 ,直接 1; show columns from Flag;

 发现flag被过滤,唉就知道没这么简单,

看到Flag表,猜测flag应该在Flag中。但是用1;show columns from Flag;无法回显出flag只会回显Nonono.  -->说明flag被过滤掉了(注:1;show columns from用来查询表中列名称)

接下来回顾一下最开始我们输入的非0数字和0与字母所回显的内容:非0数字回显1,0和字母不会回显任何内容

先了解一下||操作符:在MySQL中,操作符||表示“或”逻辑:

command1 || command2
c1和c2其中一侧为1则取1,否则取0

这里猜测后端语句,因为只有当我们输入非零数字时才会会显出1,而0和其他全都无回显,(这里很多大佬去查看的源码看到了||的使用,但我太拉跨,,实在找不到源码orz,,)而猜测逻辑大致是这样的:大胆猜测后端(内部查询语句)语句中有||操作符,只有我们输入非零数字才会满足||的逻辑为True从而进行回显的条件也就是满足:select 输入的内容 ||  一个列名 from 表名。(select 输入数据 || flag from Flag)
所以接下来搞清楚逻辑后,我们了解一下mssql中的||操作符意义:

mssql中||表示连接操作符,不表示或的逻辑。

从这里可以找到解题方法:既然我们要找到flag,后端又存在“或” 的逻辑,那么只需要把||或的逻辑改成连接符的作用就可以了。

这里需要借用到:设置 sql_mode=PIPES_AS_CONCAT来转换操作符的作用。(sql_mode设置) 

利用PIPES_AS_CONCAT令||起到连接符的作用。

构建payload:

1;set sql_mode=PIPES_AS_CONCAT;select 1

注:这里的逻辑是先把||转换为连接操作符,注意分号隔断了前面的命令,所以要再次添加select来进行查询,这里把1换成其他非零数字也一样会回显flag

由此回显出flag 

法2:

构建payload:

*,1

直接得到flag

已知后端语句是select 输入内容 || flag from Flag,输入*,1就相当于构造了select *,1 || flag from Flag,这条语句执行起来相当于select *, 1 from Flag

为啥子咧,因为1||flag是个短路算法,直接输出1了

select *和select 所有列的意义相同,那么我们构造的select *,1 || flag from Flag ==select *,1 from Flag 

拓展:

PIPES_AS_CONCAT:将”||”视为字符串的连接操作符而非或运算符,这和Oracle数据库是一样的,也和字符串的拼接函数Concat相类似.

SELECT * 和 SELECT 所有列,两者差别几乎可忽略。所以查询所有字段(或者大多数字段)的时候,可以用select *来操作。

短路算法:

|| 逻辑或的短路:a||b

计算机发现a是真,那么输出a;如果a是假,那么输出b

0 || 12   -->12 前面假,输出后面

23 || 0   -->23 前面真,输出前面

select 1 from :建立一个临时列,这个列的所有初始值都被设为1。

[第五空间 2021]WebFTP

首页,是 WebFTP,直接 github 搜到项目 WebFTP,是一个老框架了,默认密码 admin/admin888。这里复现环境直接就登上了,不过比赛时默认密码是被改了的。

最后再目录没找到,看一下配置环境有无flag

访问phpinfo.php

 得出flag

 

 

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值