java:ResourceBundle rb=ResourceBundle.getBundle("LocalString");

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java:ResourceBundle rb=ResourceBundle.getBundle("LocalString");相关的知识,希望对你有一定的参考价值。

我的垃圾教材突然就出现了这句!也没加以说明!搞得我一头雾水,
请问LocalString这个参数代表得是什么。
然后调用是String title=rb.getString("requestheader.title");里的requestheader.title哪里来的?我才能怎么知道rb.getString("")里有什么?

使用ResourceBundle访问本地资源
在设计时,我们往往需要访问一些适合本地修改的配置信息,如果作为静态变量,那么每次修改都需要重新编译一个class,.config保存此类信息并不适合,这时我们需要ResourceBundle。
通过ResourceBundle,我们需要访问位于/WEB-INF/classes目录下的一个后缀名为properties的文本类型文件,从里面读取我们需要的值。

Locale locale = Locale.getDefault();
ResourceBundle localResource = ResourceBundle.getBundle("ConnResource", locale);

String value = localResource.getString("test");
System.out.println("ResourceBundle: " + value);

这里对应了/WEB-INF/class/ConnResource.properties文件内容为:

test=hello world

打印出来的结果就是hello world

请注意,这里我们可以利用Locale和ResourceBundle的这个组合创建国际化的java程序。我们可以把locale实例化为new Locale("zh","CN");

通过ResourceBundle.getBundle("MessagesBundle", locale);

系统将自动寻找MessagesBundle_zh_CN,即定义为中国大陆地区简体中文。如果没有该文件,则会依次寻找MessagesBundle_zh,MessagesBundle,直到找到为止
参考技术A LocalString 代表配置文件的路径
com.wxrk.dao.property 表示在包com的wxrk的dao下面有个property.properties的配置文件
requestheader.title 在这个配置文件里肯定有这么一行这个是名称,后面有个=值

第二届红帽杯

  • Not Only Wireshark:

用wireshark打开,筛选http,看到一些可疑的字符

用python跑一下把这些可疑字符提取出来

import re

f = open("Not Only Wireshark.pcapng", "rb").read()

a = re.findall(b"/sqli/example2\\.php\\?name=(...)", f)

f1 = open("test.txt", "a+")

for i in a:
	j = i.decode()
	strs = "".join(j)
	f1.write(strs)

f1.close()

提取出来的字符

在 1234 后面补个5,加上后面几位就是504B0304,这是zip的文件头

生成zip文件

a = "504B03040A0001080000739C8C4B7B36E495200000001400000004000000666C616781CD460EB62015168D9E64B06FC1712365FDE5F987916DD8A52416E83FDE98FB504B01023F000A0001080000739C8C4B7B36E4952000000014000000040024000000000000002000000000000000666C61670A00200000000000010018000DB39B543D73D301A1ED91543D73D301F99066543D73D301504B0506000000000100010056000000420000000000"
a_b = bytes.fromhex(a)
f = open(\'test.zip\',\'wb\')
f.write(a_b)
f.close()

生成完成后打开

看到一个flag文件,但是要密码

解压密码在流量包中

解压密码是 key= 之后的内容

输入解压密码,得到flag

  • simple upload:

随便输个账号密码

burp 抓包

发现一个可以的地方 admin=0,把 0 改成 1,发包

在返回包里看到一个链接,访问一下

是一个上传点

上传个php脚本上去

burp 改包

admin=0 把 0 给成 1,shell.jpg 改成 shell.php

主要是检测 Content-Type 这个,要是image/jpeg 或 png 的

返回包中得到地址,访问一下

直接是图片了,看一下是啥容器

Tomcat,得上传 jsp 脚本上去

在根目录看到一个 flag 文件

查看内容,得到 flag

biubiubiu:

打开链接,是一个登陆页

在地址处看到,index.php?page=login.php,可能存在文件包含

试着读一下/etc/passwd,index.php?page=../../../../../etc/passwd

成功读取了/etc/passwd

接下来读取 nginx 的配置文件,index.php?page=../../../../../etc/nginx/nginx.conf

读取错误日志文件的内容,index.php?page=../../../../../var/log/nginx/access.log 和 index.php?page=../../../../..//var/log/nginx/error.log,发现访问的链接地址都会被记录

访问x.php<?php phpinfo();?>

phpinfo 被成功执行

写一句话

  • 听说你们喜欢手工爆破:

题目提示:flag{}内英文字母为大写形式

下载下来是一个 iso 文件,看一下里面的东西

有个压缩文件,还有很多的 txt 文本文件

全部提取出来

压缩文件需要密码,这些 txt 里都是 base64 加密的 Th3r3 1s n0 f1ag,不是解压密码

把这些 txt 的文件名提取出来

import os

a = os.listdir(r"C:\\Users\\hp\\Desktop\\OS_038c9291c8039792d1aad140f6664671")

f = open("password.txt", "w")
for filename in a:
    index = filename.rfind(".")
    name = filename[:index]
    if "情系海边之城" not in name:
    	f.write(name + "\\n")

f.close()

提取结果

把这些用作字典用 ARCHPR 4.53 爆破一下

爆出了密码

打开 doc 文件,需要密码才能打开

用工具 Advanced Office Password Recovery 爆破一下

得到密码 5693,打开文档

这里有一串字符

百度一下情系海边之城

情系海边之城又叫海边曼切斯特,联想到曼彻斯特编码

n = 0x123654AAA678876303555111AAA77611A321

flag = \'\'
bs = \'0\' + bin(n)[2:]
r = \'\'

def conv(s):
	return hex(int(s,2))[2:]

for i in range(0, len(bs), 2):
	if bs[i:i+2] == \'01\':
		r += \'0\'
	else:
		r += \'1\'

for i in range(0, len(r), 8):
	tmp = r[i:i+8][::-1]
	flag += conv(tmp[:4])
	flag += conv(tmp[4:])

print("flag" + "{" + flag.upper() + "}")

得到 flag

 

以上是关于java:ResourceBundle rb=ResourceBundle.getBundle("LocalString");的主要内容,如果未能解决你的问题,请参考以下文章

Java ResourceBundle.getBundle 如何加载属性文件?

LTE中RB和REREGCCE的定义

LTE中RB和REREGCCE的定义

Rails 3库直到需要才加载

python re.findall(rule,data),根据左右边界取值url中参数的值

DSP底层优化的几个规律