alarm函数在pwn中的一些利用

文本整理了alarm函数在pwn中的一些应用

利用alarm函数获取syscall

在一些题目里,可以利用alarm直接获取到syscall的地址
找个libc文件,然后反汇编看一下alarm的汇编代码

/ (fcn) sym.alarm 33
|   sym.alarm ();
|           ; XREFS(26)
|           0x000cc200      b825000000     mov eax, 0x25               ; '%'
|           0x000cc205      0f05           syscall										 ; syscall = sym.alarm + 0x5
|           0x000cc207      483d01f0ffff   cmp rax, -0xfff
|       ,=< 0x000cc20d      7301           jae 0xcc210
|       |   0x000cc20f      c3             ret
|       |   ; CODE XREF from sym.alarm @ 0xcc20d
|       `-> 0x000cc210      488b0d617c2f.  mov rcx, qword [0x003c3e78] ; [0x3c3e78:8]=0
|           0x000cc217      f7d8           neg eax
|           0x000cc219      648901         mov dword fs:[rcx], eax
|           0x000cc21c      4883c8ff       or rax, 0xffffffffffffffff
\           0x000cc220      c3             ret

​ 发现alarm中就有一个syscall指令,而syscall和alarm的偏移地址是0x000cc205 - 0x000cc200 = 0x5。因此我们可以得到syscall的实际地址 = alarm的实际地址 + 0x5

利用题目可以参考XCTF-008-Recho

利用alarm给eax赋值

alarm()用来设置信号SIGALRM 在经过参数seconds 指定的秒数后传送给目前的进程. 如果参数seconds 为0, 则之前设置的闹钟会被取消, 并将剩下的时间返回。利用这个特性,我们可以给eax赋值,例如第一次调用时alarm(10),隔了五秒后调用alarm(0)时,就会返回5,即给eax赋值5。之后可以利用int80的gadgets调用fopen函数。

利用的题目可以参考2016 CTF warmup

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Morphy_Amo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值