首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在linux bash中输入ASCII码"00“和"01”?

如何在linux bash中输入ASCII码"00“和"01”?
EN

Stack Overflow用户
提问于 2013-03-09 15:03:46
回答 4查看 37.2K关注 0票数 9

我有一个看起来像这样的程序:

代码语言:javascript
复制
/* buf_overflow.c */
#include <stdio.h>
int main(){
    char buf[4];
    char exploit_buf[4];
    fgets(buf, 4, stdin);
    gets(exploit_buf);
    printf("exploit_buf: %s\n", exploit_buf);
    return 0;
}

我将使用"gets“函数的漏洞来缓冲溢出其他一些变量。我想写入" exploit_buf“的值是”aaaaaaaax01\x00\x00\x00“,但是我不知道如何向exploit_buf发送ASCII码"01”和"00“。

我知道使用这个命令"printf“Aaaaaaaax01\x00\x00\x00”“可以输入我想要的字符,但是我不知道如何将它们发送到exploit_buf中。我还知道Alt+(键盘右侧的数字键)可以从我输入的ASCII码生成字符,但这在我的程序中也不起作用。

主要的问题是“如何跳过第一个函数"fgets()”并在“gets()”中输入任意的ASCII代码。

有人知道如何在linux的命令行中输入任意的ASCII代码吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-03-09 15:07:16

您可以使用echo -e

代码语言:javascript
复制
$ echo -ne 'AAAAAAAA\x01\x00\x00\x00' | python -c 'import sys; print repr(sys.stdin.read())'
'AAAAAAAA\x01\x00\x00\x00'

-e允许echo解释转义代码,而-n禁止尾随换行符。

请注意,Python程序打印出它接收到的字符串表示,这正是我们使用echo发送的内容。

对于更复杂的利用漏洞字符串,简单地使用Perl或Python直接构建利用漏洞字符串并不少见:

代码语言:javascript
复制
$ perl -e 'print "A" x 1024 . "\0\0\0\1"' | ./buf_overflow
票数 15
EN

Stack Overflow用户

发布于 2013-03-09 15:15:23

在终端中键入以下命令。

代码语言:javascript
复制
echo $'\000\001' > file1

这会将ASCII字符1和ASCII字符2的值保存到名为file1的文件中。现在你可以把它读入你的buffer exploit_buf。

票数 9
EN

Stack Overflow用户

发布于 2013-03-09 15:11:46

来自nneonneo的很好的例子。

但是,如果您希望在没有脚本帮助的情况下直接键入它们,您可以更改键盘配置以使用“美国国际(AltGr死键)”模式(在System ->偏好设置->键盘-> Layout下),然后您可以通过使用右侧的alt按钮轻松使用特殊符号。示例-é是rAlt+e。°是rAlt-shift-0-0 (在按住其他按钮的同时按两次0)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15308226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档