安卓调用 so 文件
0x00 安卓的 JNI
安卓开发中,JNI 就是 Java Native Interface 的缩写,它允许 Java 代码调用原生的 C/C++ 代码,或者允许 C/C++ 代码调用 Java 代码。
在 Android Stdio 中,有以下 3 种方法使用 so 文件:
more...安卓开发中,JNI 就是 Java Native Interface 的缩写,它允许 Java 代码调用原生的 C/C++ 代码,或者允许 C/C++ 代码调用 Java 代码。
在 Android Stdio 中,有以下 3 种方法使用 so 文件:
more...1、手机端安装一个 server 程序
2、然后把手机端的端口转到 PC 端
3、PC 端写 js 脚本进行通信
frida -U -f com.package.name -l exploit.js
function hook() {
console.log("[*] Starting script")
Java.perform(function () {
var <class_reference> = Java.use("<package_name>.<class>");
<class_reference>.<method>.implementation = function(<args>) {
console.log("hook <class_reference>.<method>()")
console.log("args is:", args)
var ret = this.<method_to_hook>(args);
return ret
}
})
}
调用静态函数
more...固件通常由 bootloader、内核、根文件系统及其他资源文件组成
固件采用的根系统文件类型有很多种,常见的有 squashfs、ubifs、ext4、jeffs2 等。
固件文件通常以 bin、zip、LZMA、arj 等文件压缩类型封装,最常见的为 bin 和 zip 格式
最常采用的文件系统是 squashfs,分析人员可以使用 unsqushfs 工具对文件系统提取数据。
主要用来读写固件,常见 JTAG 接口引脚有 10PIN、14PIN、20PIN
一般需要接的引脚:
GND:接地引脚
TDI:测试数据输入,用于向被测设备传输测试数据
TDO:测试数据输出,用于从被测设备读取测试数据
TCK:测试时钟,用于同步测试数据的传输
TMS:测试模式选择,用于控制 JTAG 状态机的状态转移
TRST:可选,TRST 可以用来对 TAPController 进行复位(初始化)
环境
攻击机 MSF:172.20.10.2
DC (Server2008R2X64):10.11.11.5
目标机 (Win7ProX86):10.11.11.14
Kerberos 协议有两个基础认证模块: AS 和 TGS,以及微软扩展的两个认证模块 S4U 和 PAC。
常见的基于 Kerberos 协议攻击的方法如下图所示:
认证的大致过程:
more...JNDI(Java Naming and Directory Interface) 是 Java 提供的 Java 命名和目录接口
JNDI 可访问的现有的目录及服务有:JDBC、LDAP、RMI、DNS、NIS、CORBA
more...在 https://github.com/gophish/gophish/releases 下载
然后编辑 config.json,之后直接 ./gophish 运行即可
more...SSTI 模版注入一般都是先找到执行命令的模块模块,然后执行(可以用工具 tplmap)
一般步骤:
1、某种类型 (字符串:"",list:[],int:1) 开始引出
2、__class__
找到当前类
3、__mro__
或者 __base__
或者 __bases__
找到根类 __object__
4、然后利用 __subclasses__
拿到子类列表
5、然后在子类列表 __init__.__globals__.keys()
找到类似 popen 能执行命令的函数