zoukankan      html  css  js  c++  java
  • 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;

  • 相关阅读:
    扫描线算法
    [Baltic 2001]Mars Maps
    Lost Cow
    李超线段树
    多种方法求解Pku3468 A Simple Problem with Integers
    陈老师的福利
    leetcode 673. 最长递增子序列的个数
    #10043.「一本通 2.2 例 1」剪花布条
    PTA7-1
    6-1 实验三哈夫曼树 (15分)
  • 原文地址:https://www.cnblogs.com/zesiar0/p/12846379.html
Copyright © 2011-2022 走看看