CTF之SSH私钥泄露

打开靶机,如图,并不知道密码,所以无法登陆
CTF之SSH私钥泄露_第1张图片
打开kali,使用netdiscover命令 netdiscover -r 你的ip/24 命令来探测靶机,比如你kali的IP是192.168.153.54,那么输入netdiscover -r 192.168.153.54/24注意的24代表探索IP的D段,表示子网位数,即子网掩码为255.255.255.0,转成二进制为:11111111 11111111 11111111 00000000,有24个1,如果24改成16,就可以探索IP的C段了,改成8,就能探索B段。有时候探测不到是网段的问题,一开始我没有探测到
CTF之SSH私钥泄露_第2张图片
后来发现是网络适配器的问题,桥接改为net
CTF之SSH私钥泄露_第3张图片
现在就可以了,192.168.199.163就是靶机
CTF之SSH私钥泄露_第4张图片
用nmap扫一下,发现开了一个特殊端口
CTF之SSH私钥泄露_第5张图片
dirb http://ip:port/进行探测
CTF之SSH私钥泄露_第6张图片
用浏览器访问一下robots.txt目录CTF之SSH私钥泄露_第7张图片
访问一下taxes看看
CTF之SSH私钥泄露_第8张图片
查看敏感目录.ssh
CTF之SSH私钥泄露_第9张图片
秘钥泄露,把秘钥和认证关键字下载下来
CTF之SSH私钥泄露_第10张图片
对id_rsa 赋予权限 chmod 600 id_rsa,ls -alh查看权限,chmod 600 文件名
使用ssh2john 将id_isa密钥信息转换为john可以识别的信息,使用ssh2john时提示没有该命令,所以使用locate ssh2john 查看文件在那里,然后直接使用python直接执行。
CTF之SSH私钥泄露_第11张图片
命令john rsacrack解出密码starwars

CTF之SSH私钥泄露_第12张图片
ssh -i 私匙 用户名/id@IP,用户名在认证关键字中,登陆成功
CTF之SSH私钥泄露_第13张图片
什么也没有,进root目录看一下,发现flag.txt,没有读取权限
CTF之SSH私钥泄露_第14张图片
先查看一下具有root权限的文件:find / -perm -4000 2>/dev/null

CTF之SSH私钥泄露_第15张图片
发现也有一个read_message,运行read_message.c看一下
CTF之SSH私钥泄露_第16张图片
我们要执行read_message然后验证数组前5个字符,限定字符数为最多20个 ,前5个为Simon即可,之后再接/bin/sh提升下权限,最后有详解
CTF之SSH私钥泄露_第17张图片
读取flag
CTF之SSH私钥泄露_第18张图片
为什么没有权限却可以执行read_message呢?为什么也这么做呢?
read_message被设置了s属性,使得用户执行read_message时,具有文件拥有者的权限,这样在执行read_message时,实际上是以root权限执行的,所以当构造栈溢出时,通过字符串覆盖,把program[] = "/usr/local/sbin/message"的原内容替换成了program[] = “/bin/sh”。最终程序在执行时,就是通过root权限fork /bin/sh的程序。
我们所执行的任何行程,都是由父行程(parent process)所产生出来的一个子行程(child process),子行程在结束后,会返回到父行程去。这个现像在Linux 中被称为 fork 。我们执行这条语句的目的在于提升权限,因为执行完毕就返回到父进程root中。

你可能感兴趣的:(kali)