• 一次sql server实战


    前言:朋友在做授权项目的时候,遇到一个sql server数据库的注入点,没办法解决,让我帮忙看看,因为是授权项目,所以就可以帮助测试下。

    内容如下:

     单引号,很明显的错误,因为是时间格式:2020-6-2,所以这里肯定是字符型的。

    接着测试:'--

     还是语法错误,那么可能因为有括号的原因,接着测试:')--

     这里出现了关键性的第一个错误:'CAST' 附近有语法错误,需要 'AS'。

    百度该错误,找到一篇文章:

    http://cn.voidcc.com/question/p-rwhjaknf-bnr.html

     看到了这样一段模板代码,类比一下,差不多我们的注入点就在这里。

    接着测试:'+AS+DATETIME)--

     然后出)附近有错误,以为有多个括号,所以测试:'+AS+DATETIME))--,还是一样的错误。

    在这里卡了会儿,因为不知道到底是我们思路就错了,还是那个小地方错了,摸着石头过河莫办法。

    后面只有继续fuzz了,先猜测是 -- 注释符没用(被过滤等),然后我们就只有手动闭合后面的语句了。

    测试:'+AS+DATETIME)AND+CAST(CONVERT(NVARCHAR,CAST(getdate()+AS+DATE))+%2b+'

     经过多次测试发现是AND那个位置出了问题,在百度找了相关错误,这篇文章说的很好:https://blog.csdn.net/huyuyang6688/article/details/38322005

    意思也就是说:如果 AND 后面接的一个布尔值类型,中间不能有空格,因为CAST( 函数返回的结果是布尔值,成功或失败。

    但是ANDCAST( 这样,去掉中间的空格,语法都错误了。所以只有:AND 1=CASE( 这样就好了。

     不明白为啥会出这个错误,当把这个时间改成和上面一样的:'2020-6-2 这种格式后,会爆另外一个错误:

     因为提示了超出范围,所以我直接改成了:'0  然后就成功了。这里发现直接为空也可以,就是+%2b+' 就完事了,如上面几张图。

    最后爆@@version的语句:

     多熟悉几个sql模板语句,在注入的时候,猜测sql语句还是大有帮助的。

  • 相关阅读:
    vmware中3中网络模式的区别
    常用 Git 命令清单 转
    inotify监控目录变化重启服务器tornado项目
    sed处理url编码解码=== web日志的url处理
    LVM 'Can’t open /dev/sdb1 exclusively. Mounted filesystem?' Problem
    Vimium使用快捷键总结
    sed 引入shell变量
    shell 除法 小数点
    selinux 导致无法启动httpd
    linux查看ssh用户登录日志与操作日志
  • 原文地址:https://www.cnblogs.com/xiaozhiru/p/13036895.html
Copyright © 2020-2023  润新知