gpt4 book ai didi

android - 使用 Android NDK 演示 printf 或 __android_log_print 漏洞

转载 作者:太空宇宙 更新时间:2023-11-04 06:48:03 25 4
gpt4 key购买 nike

我有兴趣通过 NDK 应用演示 printf 漏洞。明确地说,我知道要登录控制台,我们可以使用 __android_log_print(ANDROID_LOG_DEBUG, "LOG_TAG", "Print : %d %s",someVal, someStr);。我试过了,我知道它有效。但我明确想演示 printf() 的漏洞,特别是使用 %n 说明符写入指定位置。

有没有办法让 printf() 达到这个效果,或者是否有可能通过 __android_log_print() 实现这个?我尝试使用 android/log.h header ,但没有成功。

我可以通过运行 printf(%s%s%s%s%s%s%s%s%s%s) 来让应用程序崩溃。但同样,我不能操纵指针。

出于一般知识的目的,为什么 printf() 首先不起作用,__android_log_print() 如何防止这些攻击?

最佳答案

您确实意识到 Android 是开源的。

从寻找__android_log_print()开始并找到它:https://android.googlesource.com/platform/system/core/+/refs/heads/master/liblog/logger_write.cpp

int __android_log_print(int prio, const char* tag, const char* fmt, ...) {
va_list ap;
char buf[LOG_BUF_SIZE];
va_start(ap, fmt);
vsnprintf(buf, LOG_BUF_SIZE, fmt, ap);
va_end(ap);
return __android_log_write(prio, tag, buf);
}

我最终看到了:https://android.googlesource.com/platform/bionic/+/refs/heads/master/libc/stdio/vfprintf.cpp

第 453-454 行:

  case 'n':
__fortify_fatal("%%n not allowed on Android");

代码中还引用了通过 FORTIFY 的额外安全性,在以下博客文章中进行了描述:

https://android-developers.googleblog.com/2017/04/fortify-in-android.html

关于android - 使用 Android NDK 演示 printf 或 __android_log_print 漏洞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55390388/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com