• BUUCTF-easysql


    打开页面,有一个搜索框,根据wp这里使用堆叠注入

    跑字典发现被过滤的字符

    随便输入几个数字,发现返回结果都为1

    根据网上的wp解释,这里需要我们对后端的执行语句进行猜测
    这里不管我们输入的数字为多少返回的结果始终都是1和输入其它字符的得不到回显,判断后端的语句中存在有||,也就是

    select xxx||flag from Flag;

    这里就有一个关键的知识点:

    ||代表的是"或"运算,相当于

    0||1=1,1||1=1,0||0=0

    只要两个数据有一个为非零数字,那么或运算的结果都为1
    所以当我们不管输入0,1,2....时,执行的语句经过运算后结果都为1,从而输出为1

    这里的解法就有两种:

    1. 构造payload,就相当于分别执行了select * from Flag;和select 1||flag from Flag;

      *,1 //这里整合之后的语句就为select *,1||flag from Flag;

    2. 官方解法,这里我们需要改变||的作用,不再是做”或“运算,而是作为拼接字符串的作用,payload为

      1;set sql_mode=pipes_as_concat;select 1 //整合之后的语句就为select 1;set sql_mode=pipes_as_concat;select 1||flag from Flag;

  • 相关阅读:
    近似计算π(for循环)
    apache部署mo_python
    文件注释方法
    算法效率的度量
    ssh
    使用类名创建对象
    筛选网址
    常用django命令
    查看和关闭端口
    update脚本出错
  • 原文地址:https://www.cnblogs.com/zesiar0/p/12846379.html
Copyright © 2020-2023  润新知