verctor / LearnSQLin

MySQL注入记录

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Web-SQL注入

类型

Type: boolean-based blind

20170508203654

Type: error-based

20170508205707

Type: AND/OR time-based blind

20170508204719

Type: UNION query

20170508204909

Tips

  1. 字段列数不够,报错:"ERROR 1222 (21000): The used SELECT statements have a different number of columns",拿NULL来填;

    20170508210107

  2. 空格被过滤;

    使用括号()代替空格,任何可以计算出结果的语句,都可以用括号包围起来;
    select * from(users)where id=1;
    使用注释/**/绕过空格;
    select * from/**/users/**/where id=1;

    20170508211325

    参考:https://www.bodkin.ren/?p=685

  3. 限制from与某种字符组合(不过滤from,但不允许from xxx);

    from后加个点.即使用from.来代替fromselect * from. users where id=1;

    20170508211527

  4. mid过滤逗号,,使用from x for y绕过;

    除了mid之外,还有substrleft函数可以指定位置截取字符;

    mid(),MID(string,start,length)
    substr(),SUBSTR(string, start, length)
    left(),LEFT(string,n)

    20170508214538

    参考:http://www.lijiejie.com/mysql-injection-bypass-waf

  5. limit过滤逗号,,使用offset绕过;

    limit x,y ;从第x+1个数据开始取,取y个数据;
    limit x offset y ;从第y+1个数据开始取,去x个数据;
    报错注入有时限制显示字符数,利用第二个来搞即可;

    20170508223935

  6. 过滤逗号,,使用join来绕过;

    20170525133007

  7. 不能使用大小于大于>小于<符号,利用greatest()函数绕过;

    greatest(x,y),返回x和y中较大的那个数;

    20170508224517

    20170508225101

  8. 写脚本跑数据:

    select * from user where id=1/(ascii(mid((select(user()))from(1)for(1)))=114);

    多是这类语句,既没有出现空格,也没有出现逗号;

    ascii(mid((select(user()))from(1)for(1)))=114为真,即为1,id=1/1=1,及返回正常页面;

    如果这条语句为假,id=1/0,返回错误页面;

    可根据正常页面中某个字段来写脚本,出现这个字段认为为真,并输出,没出现默认丢掉;

    这里注意两点:利用运算符来判断真否时,运算符后的函数要用括号括起来;

    转ascii码可以使用ascii()ord(),而这等价;

  9. 使用一些常见的运算符*乘法运算、/除法运算来绕过,也可以使用加减法,异或等等;

    目的就是让where后面式子成立且达到目的值;

    参考:http://blog.csdn.net/wxq544483342/article/details/51476348

    20170508221658

  10. 表名含特殊字符,无法注出(解决各种乱码问题),使用Hex编码等;

0x61646D696E即为admin的Hex;

20170508212026

  1. 接8,使用base64,存在于5.6版本及之后的版本;

20170508213129

  1. 过滤and和or,使用&&和||绕过;
目的是让两边条件满足and或or的要求,让其输出数据,多用`or`;

20170508221126

  1. and和or运算符优先级:首先执行and条件,然后才执行or条件;

20170508220007

About

MySQL注入记录