-
-
[求助]分析imagetragic漏洞时候遇到的问题
-
发表于: 2016-5-8 12:27 2382
-
这段代码在imagemagic完整编译运行时候
用gdb调试,指针移动到'}',这个字符,没有在白名单里面,*p是会把它替代为'_'的
但是我单独拉出来调试,会产生exc_bad_access报错
并且它这个for循环写的方式我也不是很理解。求大牛!
#include <stdio.h>
#include <stdlib.h>
int main(){
char
*sanitize_command =
"\"curl\" -s -k -L -o \"/tmp/magick-125118wReF3gWkDiys\" \"https://example.com/im}age.jpg\";ls \"-la\"";
const char *q;
register char *p;
static char whitelist[] =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_- "
".@&;<>()|/\\\'\":%=~`";
p=sanitize_command;
q=sanitize_command+strlen(sanitize_command);
for (p+=strspn(p,whitelist); p != q; p+=strspn(p,whitelist)){
*p='_';
};
return(sanitize_command);
}
用gdb调试,指针移动到'}',这个字符,没有在白名单里面,*p是会把它替代为'_'的
但是我单独拉出来调试,会产生exc_bad_access报错
并且它这个for循环写的方式我也不是很理解。求大牛!
#include <stdio.h>
#include <stdlib.h>
int main(){
char
*sanitize_command =
"\"curl\" -s -k -L -o \"/tmp/magick-125118wReF3gWkDiys\" \"https://example.com/im}age.jpg\";ls \"-la\"";
const char *q;
register char *p;
static char whitelist[] =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_- "
".@&;<>()|/\\\'\":%=~`";
p=sanitize_command;
q=sanitize_command+strlen(sanitize_command);
for (p+=strspn(p,whitelist); p != q; p+=strspn(p,whitelist)){
*p='_';
};
return(sanitize_command);
}
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
赞赏
看原图
赞赏
雪币:
留言: