C 格式字符串漏洞实验室
这里是网络安全一年级的学生(我对很多东西都是新手,比如Linux等等) 我在修改实验室中的秘密值时遇到问题。 这是我需要做的C 格式字符串漏洞实验室,c,linux,security,format-string,lab,C,Linux,Security,Format String,Lab,这里是网络安全一年级的学生(我对很多东西都是新手,比如Linux等等) 我在修改实验室中的秘密值时遇到问题。 这是我需要做的 gcc-z execstack-o vul_prog vul_prog.c sudo chown根Vu_程序 sudo chmod+s vul_prog 使用字符串格式漏洞成功执行以下操作 崩溃程序 打印机密值机密 修改秘密值秘密 使用预定值0x424546修改秘密值secret 获得根shell(额外学分) 下面是我们正在使用的代码 /*vul_prog.c*/
- gcc-z execstack-o vul_prog vul_prog.c
- sudo chown根Vu_程序
- sudo chmod+s vul_prog
- 打印机密值机密
- 修改秘密值秘密
- 使用预定值0x424546修改秘密值secret
- 获得根shell(额外学分)
/*vul_prog.c*/
#include<stdio.h>
#include<stdlib.h>
#define SECRET 0x44
int main(int argc, char*argv[]) {
char user_input[200];
int secret;
int a, b, c, d; /*other variables, not used here.*/
/*getting the secret*/
secret = SECRET;
printf("The variable secret’s address is 0x%8x\n", (unsigned int)&secret);
printf("The variable secret’s value is 0x%x or %d\n", (unsigned int)secret, secret);
printf("Please enter a string\n");
scanf("%s", user_input); /*getting a string from user*/
/*Vulnerable place*/
printf(user_input);
printf("\n");
/*Verify whether your attack is successful*/
printf("The original secret: 0x%x or %d\n", SECRET, SECRET);
printf("The new secret: 0x%x or %d\n", secret, secret);
return 0;
}
到目前为止我使用的命令
sudo sysctl-w内核。随机化空间=0
gcc-z execstack-o vul_prog vul_prog.c
sudo chown root vul_prog
sudo chmod+s vul_prog
在那之后,我运行了程序/vul_prog
,输入了一堆%x以打印出地址。我的教授说,vul_prog.c
的代码是从原始代码稍微修改的,我的书使用了原始代码,并给出了如何使用
echo$(printf“\x04\xf3\xff\xbf”)。%x.%x.%x.%x.%n>输入
vu
下面是输入文件的外观
póÿÿ?.%x.%x.%x.%x.%x.%x.%x.%n
运行这些命令后,没有任何更改。然后,我在末尾又添加了3个“%x”和%n,但仍然一无所获。当我试着用你的手去做的时候
%x.%x.%x.%x.%x.%x.%x.%x.%x.%n
它会给我一个分割错误
今天早上我试着给他发电子邮件,问他我是否可以在他的办公室见他,告诉他我做错了什么,他还没有回复,所以我希望能从他所在领域的专家那里得到更多的指导
如果需要,我将添加更多信息。现在编辑您的Q以显示文件输入中的内容。当你看到这一点时,与用来生成它的printf
cmd相比,它有意义吗?(我想不会的;-))。看到你文章的最后几行了。我不是专家。试着看看帮助,看看你的Q是否适合在那里发布,但不要交叉发布。祝你好运。@Sheller thank youTry更改为echo$(printf.%x.%x.%x.%x.%n“,“\x04\xf3\xff\xbf”)>输入
您可能需要分隔这些值,即“\x04”“\xf3”“\xff”“\xbf”“
或其他内容。这可能是我能帮上忙的全部了,这周剩下的时间我都很忙。祝你好运
[10/23/19]seed@VM:~/Desktop$ ./vul_prog
The variable secret’s address is 0xbfffeb60
The variable secret’s value is 0x44 or 68
Please enter a string
.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x
.bfffeb64.44.b7fd6b28.b7ff37ec.0.b7fff000.bfffece4.44.2e78252e.252e7825
The original secret: 0x44 or 68
The new secret: 0x44 or 68