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("")里有什么?
在设计时,我们往往需要访问一些适合本地修改的配置信息,如果作为静态变量,那么每次修改都需要重新编译一个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 如何加载属性文件?