polar平台 x64
保护全关
我们有可写可读可执行的权限

拖进ida

查看主函数
有个function函数

明显存在栈溢出

我们查看函数栏中没有明显的后门函数
但是可以调用system函数

我们shift+f12查看字符串

有/bin/sh字符串
那么我们可以劫持gadget来实现rop攻击
exp:
1 | from pwn import * |

polar平台 Easy_shellcode
也是保护全关 有rwx权限

拖到ida里面看看

有个start函数

两处存在读取
都存在溢出问题
str是一个全局变量
结合之前有rwx权限
我们可以直接往这个str全局变量里面写入shell
在.bss中执行shellcode即可

exp:
1 | from pwn import * |

polar平台 guess
有个nx保护

有个start函数

明显存在栈溢出

但是翻找了一下没有直接点后门函数
在.bss中存在一个全局变量

在函数栏中存在system和gets函数
我们可以分2次先跳到gets上然后再跳到system上面
第一次跳到gets上面然后传入buf作为参数 读取我们输入的值
然后第二次跳到system上面执行我们输入的东西
exp:
1 | from pwn import * |

做个小总结
ret2text
通过栈溢出 可以跳转到任意函数上
跳转到在代码段中存在的后门函数从而getshell
ret2shellcode
首先通过栈溢出 可以跳转到其他地址上
如果没有开启nx保护即可在数据段中注入shellcode
写入shellcode后跳转到shellcode地址即可getshell
rop
查找程序中的gadget(短序列指令)
pop 寄存器;ret
还是通过栈溢出然后可以跳转到此处
主要是注入我们想要的字符串(程序中已有的) 然后再跳转到system函数中
即可getshell
格式化字符串漏洞
printf()
fprintf()
sprintf()
溢出漏洞
gets()
read()
scanf(%s)
整数溢出
存在溢出漏洞
可能可以覆盖到其他的局部变量中
说些什么吧!