Hex字符转换器转换为错误的char

时间:2015-05-08 03:14:18

标签: c char hex buffer-overflow

我正在处理缓冲区溢出攻击,我有这个代码将0xXX输入转换为等效的1字节ASCII字符。

int main(int argc,char **argv) {
    char buffer[1024];
    while (fgets(buffer,sizeof(buffer),stdin)) {
        char * rest=buffer;
        unsigned char hexVal;
        while (rest[0]!='\0') {
            if (1==sscanf(rest,"0x%2hhx",&hexVal)) {
                printf("%c",hexVal);
                rest+=4;
            } else {
                printf("%c",rest[0]);
                rest++;
            }
        }
    }
    return 0;
}

当我给它输入0x180x850x040x08(这是08048518的小端版本)时,它会变成地址bdbfef18。 我不确定为什么地址被错误解释。

0 个答案:

没有答案