ezpwn靶机
端口扫描
通过tscan扫描出以下端口

发现有二个6538和9999端口
查看6538端口

溢出漏洞
发现有一个文件
结合靶机名应该是elf文件

确实是一个elf文件
保护全关了
我们把他拖到ida里面看看

我们跟进一下start()函数

gets(a)这里存在溢出漏洞
start函数里面要求b[1]要等于115 也就是s
c[1]要求等于112 也就是p
查看port()函数

会执行一个shell脚本
还会输出一段文字
但是文字这里乱码了

回到start()函数这里
查看start函数栈结构

我们结合这个函数栈结构
我们可以写出这个溢出漏洞的exp从而触发port函数
9999端口上的服务猜测就是这个程序被绑上去了
exp:
1 | from pwn import * |
成功执行

再次扫描端口
输出了刚刚我们看不到的文字
提示我们有新的端口开放了
我们再次扫描端口
此时多了一个11450的端口

访问11450

有一个hint和ret2text文件
hint里面有提示

貌似提示我们密码和账号在这个程序之中
密码下面还有一个offset
可能指的是偏移量
ret2text
下载ret2text并拖入ida中

也有一个start()函数


也是会输出一段文字 也是乱码了
旁边函数栏有个shell()函数

是个后门函数
我们把ret2text文件放到linux里面执行看看会输出什么

这个a和上个程序里面执行port.sh的路径中的home目录下面的一个账号目录同名
猜测a就是账号名
离shell还有多远呢与hint里面的offset(偏移量)有关
可能密码就是a到达栈溢出处的ret的距离
回到函数栈结构中查看

猜测密码就是0xa+0x8的这个长度
即0x12
我们试试18或者0x12去登录a账号

使用0x12 成功登录

拿到user的flag
root
1 | sudo -l |
看看可以执行什么命令

发现可以执行file命令
我们现在可以任意读文件

发现root账号配置了ssh密钥登录
猜测可能可以使用密钥登录root账号
1 | sudo file -f /root/.ssh/id_rsa > a |
整理一下格式

拿着密钥登录试试

成功提权
说些什么吧!