Sploitus

Exploit for external_expact_AOSP10_r33_CVE-2022-25315

kitploit · 2026-08-31

Exploit Code

MARKDOWN91 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-SHAIKUSAF-EXTERNAL_EXPACT_AOSP10_R33_CVE-2022-25315
![Travis CI Build Status](https://travis-ci.org/libexpat/libexpat.svg?branch=master) ![AppVeyor Build Status](https://ci.appveyor.com/api/projects/status/github/libexpat/libexpat?svg=true)

# Expat,发布版 2.2.6

这是 Expat,一个用于解析 XML 的 C 库,由 James Clark 于 1997 年发起。Expat 是一个面向流的 XML 解析器。这意味着您需要在开始解析之前向解析器注册处理程序。当解析器在正在解析的文档中发现相关结构时,会调用这些处理程序。开始标签就是您可以为其注册处理程序的那种结构的一个示例。

Windows 用户应使用 `expat_win32` 包,该包包含预编译的库和可执行文件,以及面向开发人员的源代码。

Expat 是自由软件。您可以根据随本包分发的文件 `COPYING` 中所包含的许可证条款对其复制、分发和修改。该许可证与 MIT/X Consortium 许可证相同。

如果您是从 Git 仓库 的检出版本构建 Expat,则需要运行一个脚本来生成 configure 脚本,该脚本使用 GNU autoconf 和 libtool 工具。为此,您需要安装 autoconf 2.58 或更高版本。按如下方式运行该脚本:

root@kitploit:~
    
    
    ./buildconf.sh
    

完成此操作后,按照与从源代码发行版构建相同的说明进行操作。

要从源代码发行版构建 Expat,请先在发行版的顶层目录中运行配置 shell 脚本:

root@kitploit:~
    
    
    ./configure
    

您可以向 configure 提供许多选项(可以通过运行带 `--help` 选项的 configure 来了解这些选项)。但最受关注的是设置安装目录的选项。默认情况下,configure 脚本会将 libexpat 安装到 `/usr/local/lib`,将 `expat.h` 安装到 `/usr/local/include`,并将 `xmlwf` 安装到 `/usr/local/bin`。例如,如果您希望安装到 `/home/me/mystuff/lib`、`/home/me/mystuff/include` 和 `/home/me/mystuff/bin`,可以通过以下方式告知 `configure`:

root@kitploit:~
    
    
    ./configure --prefix=/home/me/mystuff
    

另一个有趣的选项是为行号、列号和总体字节索引启用 64 位整数支持:

root@kitploit:~
    
    
    ./configure CPPFLAGS=-DXML_LARGE_SIZE
    

然而,这样的修改将是对 ABI 的破坏性变更,因此不建议一般用途使用 — 例如作为 Linux 发行版的一部分 — 而仅适用于有特殊需求的构建。

运行 configure 脚本后,`make` 命令将构建所有内容,`make install` 会将所有内容安装到适当的位置。请查看 `Makefile` 以了解其他 `make` 选项。请注意,您需要对将安装内容的目录具有写权限。

如果您有兴趣构建 Expat 以提供 UTF-16 编码(而不是默认的 UTF-8)的文档信息,请遵循以下说明(在运行 `make distclean` 之后)。请注意,我们使用 `--without-xmlwf` 进行配置,因为 xmlwf(尚)不支持这种编译模式:

  1. 批量修补 `Makefile.am` 文件,将库名改为 `libexpatw.la`:   
`find -name Makefile.am -exec sed -e 's,libexpat\.la,libexpatw.la,' -e 's,libexpat_la,libexpatw_la,' -i {} +`

  2. 运行 `automake` 以重写 `Makefile.in` 文件:  
`automake`

  3. 对于以 unsigned short 形式输出 UTF-16(以及以 char 形式输出版本/错误字符串),请运行:  
`./configure CPPFLAGS=-DXML_UNICODE --without-xmlwf`  
对于以 `wchar_t` 形式输出 UTF-16(包括版本/错误字符串),请运行:  
`./configure CFLAGS="-g -O2 -fshort-wchar" CPPFLAGS=-DXML_UNICODE_WCHAR_T --without-xmlwf`   
注意:后者还要求 libc 使用 `-fshort-wchar` 编译。

  4. 运行 `make`(不包括 xmlwf)。

  5. 运行 `make install`(同样不包括 xmlwf)。




支持使用 `DESTDIR`。其工作方式如下:

root@kitploit:~
    
    
    make install DESTDIR=/path/to/image
    

会覆盖 makefile 中设置的 `DESTDIR`,因为变量设置的优先级为

  1. 命令行
  2. makefile 内
  3. 环境



注意:这仅适用于 Expat 库本身,目前不支持构建 xmlwf 和测试的 UTF-16 版本。

当将 Expat 用于使用 autoconf 进行配置的项目时,您可以使用 `conftools/expat.m4` 中的探测宏来确定如何包含 Expat。更多信息请参阅该文件顶部的注释。

本发行版中的 `doc/reference.html` 文件提供了参考手册。