HackersLab各等级问题解决指南
1. Level 0问题
登录信息:Login: level08 Password: guest
学习内容:Level 0简介
此等级极为简单,旨在让你理解进入后续等级所需的一些概念。在每个等级,我们的主要目标都是获取下一级的密码,可通过运行
bin
目录下的
pass
命令来实现。
示例操作:
- 登录到HackersLab,输入
whoami
命令确认用户名是
level0
,输入
id
命令获取用户ID(UID)和组ID(GID)等信息。
- 使用命令
find / -uid 2001 –gid 2000
查找UID为2001(level1)且GID为2000(level0)的文件,会出现很多权限拒绝的结果,使用
find / -uid 2001 –gid 2000 2> / dev / null
可过滤不必要信息,最终找到
/ etc / test
文件。
- 执行
ls –la / etc / test
查看文件信息,确认是用户
level1
创建且属于组
level0
。
- 尝试运行
test
文件会报错,因为可执行文件不在
PATH
中,使用
./ test
即可运行,成功获取level1的密码
xxxxxx
。
在实际操作中,连接到
drill.hackerslab.org
,找到
/dev/.hi
文件,运行该文件后发现它是一个后门程序,运行后获得了
level1
的权限,输入
pass
命令得到level1的密码
newworld
。
2. Level 1问题
登录信息:Login: level18 Password: newworld
学习内容:外部命令执行和管道
此等级需要掌握如何利用执行外部命令的程序。若程序的EUID(ID)高于自身,可能会带来安全问题。
示例操作:
- 查找UID为
level2
且GID为
level1
的文件,如
/ usr / bin / list
。
- 运行
./ list
,程序会要求输入文件路径,输入
/ usr / bin / list
后,程序会列出该文件信息。由于该程序以高于自身的权限执行
ls
命令,可利用管道
|
添加其他命令。
- 输入
/ usr / bin / list | pass
,成功获取level2的密码。
实际操作中,找到
/ proc / 20840
和
/ usr / bin / amos
文件,运行
amos
程序,利用管道添加
pass
命令,得到level2的密码。
3. Level 2问题
登录信息:Login: level28 Password: DoItYourself
学习内容:Shell和子Shell
系统的Shell是执行输入的Shell解释器命令的环境。在Linux中有多种Shell类型,还可以在一个Shell中运行另一个Shell,即子Shell。
示例操作:
- 连接到HackersLab,找到
alert
文件,运行该文件发现使用了
more
命令分页显示。
- 在
—More—
提示处输入
! / bin / sh
,进入一个具有
level3
权限的子Shell,输入
pass
命令,获得level3的密码。
4. Level 3问题
登录信息:Login: level38 Password: hackerproof
学习内容:PATH和IFS
PATH是系统查找可执行文件的目录路径。IFS(Internal Field Separator)可用于分隔命令中的字符。
示例操作:
- 找到
today
文件,运行该文件会显示日期。
- 执行
export PATH = / home / level3 / tmp
创建新的PATH并导出到系统,执行
export IFS =/
配置IFS。
- 创建一个名为
date
的文本文件,内容为
/ bin / pass
。
- 再次运行
./today
,得到level4的密码。
5. Level 4问题
登录信息:Login: level4 Password: AreUReady?
学习内容:更多推理和PATH
此等级与Level 3类似,但需要运行游戏并识别其运行的外部命令。
示例操作:
- 连接到HackersLab,找到
trojan
文件并运行,发现游戏会清屏,推测可能运行了
clear
命令。
- 导出PATH到
/ home / level4 / tmp
目录,导出IFS,在记录目录创建
clear
文件,内容为
/ bin / pass
。
- 运行
trojan
文件,获得level5的密码
Silent night, holy night!
。
6. Level 5问题
登录信息:Login: level5 Password: Silent night, holy night!
学习内容:二进制文件中的字符串
字符串是字符的组合,在未使用加密功能的编译程序中,大部分字符串会显示出来,可使用
strings
命令查找。
示例操作:
- 在DOS中编译一个程序,使用
strings
命令查找其中的密码字符串。
- 在Linux中,连接到HackersLab,找到
/ lib / security /pam_auth.so
文件,运行该文件输入任意密码会提示错误。
- 使用
strings
命令扫描该文件,找到多个可能的密码,尝试后发现
Best of The Best Hackerslab
是level6的密码。
7. Level 6问题
登录信息:Login: level6 Password: Best of The Best Hackerslab
学习内容:端口扫描
此等级相对简单,重点是找到系统的第二个开放端口。可使用端口扫描器,如NMAP和VALHALLA。
示例操作:
- 使用NMAP扫描
drill.hackerslab.org
,发现开放端口23、80和6969。
- 使用VALHALLA扫描得到类似结果,最可疑的是6969端口。
- 使用
telnet drill.hackerslab.org 6969
连接该端口,输入
level6
的密码后,获得level7的密码
Can’t help falling in love
。
8. Level 7问题
登录信息:Login: level7 Password: Can’t help falling in love
学习内容:破解Unix/Linux密码
Unix/Linux使用DES加密系统,密码无法直接解密,可使用CrackerJack和John The Ripper等程序通过字典或暴力破解。
示例操作:
- 登录到HackersLab,找到
/ dev / audio2
文件,运行该文件显示一些字符串,推测其中包含加密密码。
- 使用John The Ripper,将获得的加密密码替换到
shadow
文件中,使用单词列表
passwords.txt
进行破解,得到level8的密码
wonderful
。
9. Level 8问题
登录信息:Login: level8 Password: wonderful
学习内容:竞态条件
此等级的问题相对复杂,需要理解竞态条件的概念。
示例操作:
- 连接到HackersLab,找到
/usr / bin /ps2
文件,使用
strace
命令检查该程序的操作,发现其创建临时文件时存在安全问题。
- 使用VI编辑器创建两个脚本
race1
和
race2
,分别运行
ps2
文件和删除并替换临时文件。
- 打开两个telnet窗口同时运行这两个脚本,成功获得level9的密码
! Secu!
。
10. Level 9问题
登录信息:Login: level9 Password:! Secu!
学习内容:缓冲区溢出
缓冲区溢出分为栈溢出和堆溢出,此等级主要讨论栈溢出。
示例操作:
- 找到
/ etc / bof
文件,运行该程序输入昵称,输入过长字符串会导致缓冲区溢出。
- 编写
exploit.c
文件并编译,尝试不同的地址进行缓冲区溢出,最终找到正确地址,运行
/ bin / pass
命令获得level10的密码
Beauty and Beast
。
11. Level 10问题
此等级需要进行IP欺骗和UDP欺骗来获取下一级密码。
操作步骤:
- 可使用
hping
工具或自己编写C代码进行UDP欺骗。
- 编译
udpspoofbr
程序,输入源IP、源端口、目标IP和目标端口,由于需要root权限,以root身份运行,发送欺骗包后通过邮件收到level11的密码。
12. Level 11问题
此等级涉及堆溢出,需要利用程序的分段错误和SUID权限来获取密码。
操作步骤:
- 连接到HackersLab,找到
/ usr / local /bin/hof
文件,运行该文件会出现分段错误。
- 编写并编译
exploit.c
文件,设置常量
PROGVULN
和
ARQVULN
,通过尝试不同的十六进制地址,最终获得level13的密码
I want to love forever
。
13. Level 12问题
登录信息:Login: level128 Password: I want to love forever
学习内容:简单加密
此等级需要利用
/usr / bin / encrypt
程序找出加密算法,破解加密密码。
操作步骤:
- 已知加密密码
tu | tSI / Z ^
,长度为9,使用
./encrypt aaaaaaaaa
进行测试,逐步改变字符值,通过试错法找到对应原始密码
chl1296rh
。
- 运行
./encrypt chl1296rh | more
验证,成功获得level13的密码
chl1296rh
。
14. 其他等级提示
-
Level 13:涉及套接字编程,需根据
www.hackerslab.org的要求,使用header protocol.h构建程序计算距离并发送值到服务器获取密码。 -
Level 14:需要了解C语言、
execve和使用GDB设置断点。 - Level 15:使用函数指针进行溢出,与之前的堆溢出类似。
- Level 16:更多的栈溢出问题。
- Level 17:留待你自己探索。
以下是一个简单的流程图展示部分等级的操作流程:
graph TD;
A[Level 0] --> B[查找文件];
B --> C[运行文件获取下一级密码];
C --> D[Level 1];
D --> E[利用外部命令和管道];
E --> F[获取Level 2密码];
F --> G[Level 2];
G --> H[利用Shell和子Shell];
H --> I[获取Level 3密码];
通过以上各等级的操作和学习,可以逐步掌握HackersLab中的各种技术和方法,不断提升自己的技能水平。
HackersLab各等级问题解决指南
15. 各等级关键信息总结
为了更清晰地了解各等级的关键信息,下面整理成表格形式:
| 等级 | 登录信息 | 学习内容 | 关键操作 | 密码 |
| — | — | — | — | — |
| Level 0 | Login: level08 Password: guest | 理解基础概念,获取下一级密码方法 | 查找特定UID和GID文件,运行文件 | xxxxx |
| Level 1 | Login: level18 Password: newworld | 外部命令执行和管道利用 | 利用程序执行外部命令,使用管道添加命令 | |
| Level 2 | Login: level28 Password: DoItYourself | Shell和子Shell使用 | 利用
more
命令进入子Shell | |
| Level 3 | Login: level38 Password: hackerproof | PATH和IFS概念及应用 | 配置PATH和IFS,创建特定文件 | |
| Level 4 | Login: level4 Password: AreUReady? | 更多推理和PATH运用 | 运行游戏识别命令,配置PATH和IFS | Silent night, holy night! |
| Level 5 | Login: level5 Password: Silent night, holy night! | 二进制文件中字符串查找 | 使用
strings
命令查找密码字符串 | Best of The Best Hackerslab |
| Level 6 | Login: level6 Password: Best of The Best Hackerslab | 端口扫描 | 使用NMAP和VALHALLA扫描端口 | Can’t help falling in love |
| Level 7 | Login: level7 Password: Can’t help falling in love | 破解Unix/Linux密码 | 使用John The Ripper破解加密密码 | wonderful |
| Level 8 | Login: level8 Password: wonderful | 竞态条件利用 | 创建脚本利用竞态条件 |! Secu! |
| Level 9 | Login: level9 Password:! Secu! | 缓冲区溢出 | 编写并编译代码进行缓冲区溢出 | Beauty and Beast |
| Level 10 | | IP和UDP欺骗 | 编译程序进行UDP欺骗 | |
| Level 11 | | 堆溢出利用 | 编写并编译代码利用堆溢出 | I want to love forever |
| Level 12 | Login: level128 Password: I want to love forever | 简单加密破解 | 利用加密程序试错破解密码 | chl1296rh |
16. 部分等级操作详细流程
下面以Level 3和Level 8为例,详细展示操作流程:
Level 3操作流程
graph TD;
A[连接到HackersLab] --> B[找到today文件];
B --> C[运行today文件显示日期];
C --> D[执行export PATH = / home / level3 / tmp];
D --> E[执行export IFS =/];
E --> F[创建date文件,内容为/ bin / pass];
F --> G[再次运行./today];
G --> H[获得Level 4密码];
操作步骤:
1. 连接到HackersLab,找到
today
文件。
2. 运行
today
文件,确认会显示日期。
3. 执行
export PATH = / home / level3 / tmp
,创建新的PATH并导出到系统。
4. 执行
export IFS =/
,配置IFS。
5. 在指定目录创建名为
date
的文本文件,内容为
/ bin / pass
。
6. 再次运行
./today
,得到Level 4的密码。
Level 8操作流程
graph TD;
A[连接到HackersLab] --> B[找到/usr / bin /ps2文件];
B --> C[使用strace命令检查ps2操作];
C --> D[发现临时文件创建问题];
D --> E[使用VI创建race1和race2脚本];
E --> F[打开两个telnet窗口];
F --> G[一个窗口运行race1,另一个运行race2];
G --> H[获得Level 9密码];
操作步骤:
1. 连接到HackersLab,找到
/usr / bin /ps2
文件。
2. 使用
strace
命令检查
ps2
程序的操作,发现其创建临时文件时存在安全问题。
3. 使用VI编辑器创建两个脚本
race1
和
race2
。
-
race1
脚本:
while true
do
/usr / bin / ps2
done
- `race2`脚本:
while true
do
/usr / bin / ps2 &
rm -rf /var/tmp2/ps2.tmp
ln -sf / var / tmp2 / race1 /var/tmp2/ps2.tmp
done
-
打开两个telnet窗口,一个窗口运行
./race1,另一个窗口运行./race2。 - 运行一段时间后,获得Level 9的密码。
17. 总结与建议
通过对HackersLab各等级问题的解决过程,我们可以看到涉及到了多种技术和概念,如文件查找、权限利用、加密破解、缓冲区溢出等。在实际操作中,需要仔细分析每个等级的问题描述,结合所学知识进行推理和尝试。
建议大家在遇到问题时,多查阅相关资料,深入理解技术原理。同时,可以自己动手编写脚本和程序,加深对各种技术的掌握。对于后续等级的挑战,要做好充分的准备,不断提升自己的编程和分析能力。
希望大家能够在这个过程中不断学习和成长,掌握更多的技术技能,为未来的学习和工作打下坚实的基础。
通过以上内容,你可以更系统地了解HackersLab各等级的问题解决方法,按照操作步骤逐步实践,提升自己的技术水平。
超级会员免费看
48

被折叠的 条评论
为什么被折叠?



