- hackcon ctf 2018 | pwn wp
fantasy_learner
BOF漏洞点:栈溢出利用过程栈溢出跳转callMeMaybe函数获得flagexpSheSellsSeaShells90流程分析:给出了输入的栈地址有一个栈溢出点没有nx利用过程:根据以上三点,得出可以使用ret2shellcode使用shellcraft生成shellcode利用栈溢出,输入并跳转到shellcodeexpSimpleYetElegent150这道题目做了最久,卡在了能否根据_d
- ctf-wiki之ret2shellcode学习笔记
hope_9382
shellcode是3用于完成某个功能的汇编代码。通常用于获得目标系统的shell。查看下程序的保护没有开启任何保护在IDA中看到gets函数明显的栈溢出漏洞gets中获取的输入还会被复制到buf2中,且buf2存在于.bss段中buf2存在与.bss段.bss段通常时用来存放程序中未初始化的或者初始化为0的全局变量和静态变量的一块内存区域。特点是可读写,在程序执行之前.bss段会自动清0。因此我
- 从零开始做题:逆向 ret2shellcode orw
网络安全我来了
服务器linux网络安全安全系统安全
1.题目信息BUUCTF在线评测下载orw时防病毒要关闭2.题目分析orw是open、read、write的简写。有时候binary会通过prctl、seccomp进行沙箱保护,并不能getshell。只能通过orw的方式拿到flag。fd=open(‘./flag’);#打开flag文件,得到fdread(fd,buf,0x30);#通过fd将flag的内容读到内存中write(1,buf,0x
- ret2shellcode 学习
她送的苦茶子
学习安全
文章目录ret2shellcoderet2shellcodeshellcode之前提了,ret2shellcode是指攻击者需要自己将调用shell的机器码(也称shellcode)注入至内存中,随后利用栈溢出复写return_address,进而使程序跳转至shellcode所在内存。向stack段中注入shellcode能向栈中注入shellcode的情况非常少见,这是因为目前的操作系统及程序
- pwn做题之ret2shellcode
征的帅
linux
将二进制文件拖入ida发现无后门程序,想到要生成shellcode,用shellcraft.sh()生成,asm(shellcraft.sh()),用gdb找ebx-eax的值,payload=(ebp-eax)转换成10进制+4(文件为32字节,64字节应为8)+p32(bass区地址).io.sendline(payload)io.interactive()ebp-eax=6c=108
- [BUUCTF]-PWN:CSAW_pilot解析
Clxhzg
数据库网络安全
查看保护,NX没有开启,栈可执行。查看main函数,可以看到给出了main函数栈开始的地址,以及可以进行栈溢出的read函数,因为NX没开,栈可执行所以考虑使用ret2shellcode。这里有两种解法#解法一(使用pwntools给的shellcode):exp如下frompwnimport*context(arch='amd64',log_level='debug')#p=remote('no
- CTF-栈溢出-基本ROP-【ret2shellcode】
看星猩的柴狗
CTF-PWN-栈溢出学习
文章目录ret2shellcodeHTBCyberSanta2021sleigh思路expret2shellcode控制程序去执行我们自己填充的代码。条件:我们填充的代码的位置具有可执行权限HTBCyberSanta2021sleigh检查保护HasRWXsegments提示有可读可写可执行的段main函数banner函数:repair函数:这里read存在栈溢出,同时第一个fprintf输出了b
- NewStarCTFWEEK1部分题解
Nq0inaen
PWNpython
NewStarCTFWEEK1pwnret2text:calc:ret2libc:ret2shellcode:fallw1nd’sgift:REHello_Reverse:Baby_Re:CRYPTO:caeser:吉奥万·巴蒂斯塔·贝拉索先生的密码:eazyxor:pwnret2text:frompwnimport*r=process('./pwn')#r=remote('node4.buuoj
- ret2shellcode 的泄露puts@got表
wing_7
windocker操作系统原理linuxjavahtmljvm
disassemblemain获取read@plt地址0x4005000x000000000040067e:call0x400500disassemble0x400500地址发现
[email protected]会执行jmp指令jmp到的其实这是plt表对应函数的got表查看jmp地址的内存内容x/20gx0x601028发现
[email protected]保存了read函数的blic中的地址callread—>r
- PWN入门系列(3)ROP的利用
二进制菜鸟K1rito
安全web安全python
ret2shellcode原理ret2shellcode,即控制程序shellcode代码。shellcode指的是用于完成某个功能的汇编代码,如:call等,常见的功能主要是获取目标系统的shell。如果想执行shellcode,需要对应的binary在运行时,shellcode所在的区域具有可执行权限。举例还是以bammboofox的ret2shellcode为例附:ret2shellcode
- 【PWN · ret2shellcode | “jmp esp“】[i春秋]ret2shellcode
Mr_Fmnwon
【PWN·ret2shellcode】pwnret2shellcode
当溢出长度不足时,如何将shellcode放入padding位值,并执行呢?目录前言一、题目重述编辑二、题目分析1.存在溢出2.如何跳转3.payload构想4.Addr(jmpesp)5.指令序列三、exp总前言回顾ret2shellcode发现还有很多基础的技巧没有掌握。本题算是一个经典地、通过jmpesp将栈上的shellcode进行执行的题目。一、题目重述二、题目分析1.存在溢出但是溢出字
- pwn入门小技巧
是脆脆啊
pwn安全web安全
目前我所遇到的一些pwn的做题技巧我也是偶尔玩玩ctf,所以也不会很难的,所以这篇主要是帮助刚开始学习的人学习吧首先知识点包括:栈,堆,整数溢出,格式化字符串目前ctf的题越来越偏向于实际,有的会使用刚刚爆出来的CVE漏洞的,所以不能只局限于glibc所以可以大体分为两类把:libc,kernel栈利用:有ret2libc,ret2shellcode,ret2text,ropchain,ret2s
- pwn — ret2shellcode
YeeZi_
Ret2shellcode:按惯例检查保护,发现啥都没开用ida打开看main函数发现了gets和strncpy函数,将gets里的s的值存入了buf2题文中无system,无shellcode(据说是长成system(‘/bin/sh’)这样的东西),所以要自己写一个咯(写进栈里)那就让它在脚本里生成一个shellcode(指令为:shellcode=asm(shellcraft.sh()))得
- 简单的PWN学习-ret2shellcode
vlan911
PWN学习
最近笔者开始钻研pwn的一些知识,发现栈溢出真的非常的有意思,于是经过一个多礼拜的学习,终于是把2016年的一道CTF题给看明白了了,首先我们学习一下前置技能0x01shellcode首先简单看一下shellcode是怎么生成的,首先简单看一下shellcode是怎么生成的,使用python3环境生成一个shellcode,如下所示frompwnimport*shellcode=shellcraf
- 字符串溢出(pwn溢出)--ret2shellcode
莫慌搞安全
二进制安全安全
有些技术再也记不住了。所以记录笔记,下面这个文档写的蛮好的,不过我实际情况和他稍有不同,特此记录pwn溢出入门案例,信息安全https://saucer-man.com/information_security/177.html这里面的例子是常见的栈溢出,例子代码就是如上文中的代码,为了测试方便,如上面作者一样,关闭ASLR,关闭PIE,这个操作都一样。ret2shellcode,即控制程序执行s
- CTFshow-pwn入门-前置基础pwn23-pwn25
T1ngSh0w
网络安全安全linux
pwn23-25的题目会涉及到ret2shellcode、ret2libc等内容,本篇文章只会侧重研究这几道题目的wp,不会过多涉及到ret2shellcode、ret2libc的基本原理,等有时间再来写关于ret2libc、ret2shellcode…的相关内容。大家可以参考CTFwiki的文章去慢慢学习。CTFwiki:https://ctf-wiki.org/pwn/linux/user-m
- 【pwn-栈溢出】— ret2shellcode
小朋友呢
PWN基础网络安全
目录ret2shellcode0x1、程序信息0x2、检查保护0x3、寻找溢出点0x4、计算溢出偏移0x5、验证bss段可执行0x6、编写exp脚本ret2shellcode0x1、程序信息描述内容程序名称ret2shellcode程序平台linux程序来源ctf_wikiCPU架构amd64libc版本2.31利用手法ret2shellcode系统版本Ubuntu20.04LTS下载地址http
- pwn基础之ctfwiki-栈溢出-基础ROP-ret2shellcode
大能猫能
笔记安全ubuntupython
文章目录前言原理ret2shellcode挖掘漏洞利用漏洞利用脚本(exp)总结前言二进制小白的学习记录,是自己写的第二篇文章,相较于第一篇文章我也做了一些改进,希望会越来越好。也希望二进制大佬们及时斧正文章的错误。原理ret2shellcode,即控制程序执行shellcode代码。shellcode指的是用于完成某个功能的汇编代码,常见的功能主要是获取目标系统的shell。一般来说,shell
- PWN-ret2shellcode原理
双层小牛堡
PWN的学习笔记
我们之前做过很简单的pwn题目buuctf-rip这种是在程序中存在shellcode直接返回地址改为这个shellcode的地址即可但是如果程序里面没有呢这种类型就是ret2shellcode常见的shellcodeshellcode="\x31\xf6\x48\xbb\x2f\x62\x69\x6e\x2f\x2f\x73\x68\x56\x53\x54\x5f\x6a\x3b\x58\x31
- CTFHUB-PWN-ret2shellcode
双层小牛堡
PWN的学习开发语言
PWN常用命令_猫疼玩AI的博客-CSDN博客几个大方向的思路:没有PIE:ret2libcNX关闭:ret2shellcode其他思路:ret2csu、ret2text【程序本身有shellcode】先检查开了什么保护没有开保护并且是64的放入ida64查看字符串发现没有shell我们看看主函数发现有read函数但是没有shell并且read的大小为400u但是我们buf的大小只为10h所以说明
- PWN栈溢出基础——ROP1.0
杰森任
PWN栈溢出基础——ROP1.0这篇文章介绍ret2text,ret2shellcode,ret2syscall(基础篇)在中间会尽量准确地阐述漏洞利用和exp的原理,并且尽量细致地将每一步操作写出来。参考ctf-wiki以及其他资源,参考链接见最后,文中展示的题目下载链接见评论区1.ret2textret2text即控制程序执行程序本身已有的代码(.text)。其实,这种攻击方法是一种笼统的描述
- 栈溢出 简本ROP ret2shellcode
pumpkin9
ret2shellcode原理ret2shellcode,即控制程序执行shellcode代码。shellcode指的是用于完成某个功能的汇编代码,常见的功能主要是获取目标系统的shell。一般来说,shellcode需要我们自己填充。这其实是另外一种典型的利用方法,即此时我们需要自己去填充一些可执行的代码。在栈溢出的基础上,要想执行shellcode,需要对应的binary在运行时,shellc
- csapp attack lab
Kr0ne
csappattacklevel1简单的跳转过去就行了,payload:payload1=b'a'*0x28+p64(0x04017C0)level2传个参,可以发现程序开了个rwx的段给我们用,那就是ret2shellcode了,自己写个gadget然后ret过去,payload:payload2=asm('movrdi,0x59b997fa')payload2+=asm('ret')paylo
- 【CTF题解NO.00002】minilCTF 2020 - write up by arttnba3
arttnba3
CTF题解python内存泄漏信息安全
【CTF题解NO.00002】minilCTF2020-writeupbyarttnba30x00.绪论0x01.SigninStartingPoint0x02.PWNhelloret2text执行过程:ret2shellcode修正过程:高阶解法:栈迁移0x00.绪论mini-LCTF,前身是makerCTF,是西电校内享誉盛名(?)的CTF,作为菜鸡CTFer也尝试着参加了一手因为咱主攻PWN
- pwn ret2shellcode
YouNgFreshq
写在前面,记录一些小知识和一些文章对于checksec后几个参数的具体研究:checksec及其包含的保护机制(原博客图已经挂了,只能用简书的了)pwntools介绍(刚开始看不懂英文文档可以看这个):pwntoolspwntools使用简介文件执行时权限不够使用命令为:chmod+xstart.sh当堆栈开启了保护的时候,我们不能够直接将shellcode覆盖到堆栈中执行,而需要利用程序其他部分
- 栈溢出攻击(2)-ROP基础(1)
BurningTeng
漏洞网络与安全Windows开发
文章目录预备条件栈溢出ROPret2text程序攻击目标简单fuzz查看保护机制调试程序查看汇编代码确定与返回地址的偏移寻找获取系统shell的代码获取shellret2shellcode攻击目标简单fuzz查看保护机制调试程序确定与返回地址的偏移获取shellpythonljustshellcode获取shell的payloadexploit公众号预备条件ret2shellcode:http:/
- root_me_stack_buffer_overflow_basic
doudoudedi
BUUCTF题目
ARMpwn简单的栈溢出,就是环境搭建的问题调试出偏移0xa4,发现啥保护没有开,还泄漏了栈地址,就直接ret2shellcode了frompwnimport*#p=process(qemu-arm-g1234-L/usr/arm-linux-gnueabihf/./root_me_stack_buffer_overflow_basiac"])p=remote("node3.buuoj.cn",2
- pwn 暑假复习二 简单rop
SsMing.
pwn
例一:ret2shellcode先复习一下计算与ebp的距离的方法,昨天复习的是用pattern来寻找,今天复习另一种,以ctfwiki的ret2text为例。先用ida打开查看源码int__cdeclmain(intargc,constchar**argv,constchar**envp){intv4;//[sp+1Ch][bp-64h]@1setvbuf(stdout,0,2,0);setvb
- buuctf ez_pz_hackover_2016(ret2shellcode)
Tower2358
这题和上次的ret2shellcode不一样,上次的是返回到bss段,这回是返回到栈上,因为本题给出的是栈的一个地址,所以我们通过计算我们输入进去的shellcode对应这个地址的偏移,然后跳到shellcode的栈地址,就可以执行shellcode。题目大致讲的就是先往s里写数据,然后把s的数据放到dest上,而dest存在栈溢出漏洞本题的关键就是算出shellcode距离泄漏的s的栈地址的偏移
- buuctf ciscn_2019_n_5 (ret2shellcode)
Tower2358
无保护,程序直接提供了写入bss,ret2shellcode一共两次输入,第一次写sh到bss,第二次溢出text然后跳转到bssexp:frompwnimport*fromLibcSearcherimport*local_file='./ciscn_2019_n_5'local_libc='/usr/lib/x86_64-linux-gnu/libc-2.29.so'remote_libc='.
- ztree设置禁用节点
3213213333332132
JavaScriptztreejsonsetDisabledNodeAjax
ztree设置禁用节点的时候注意,当使用ajax后台请求数据,必须要设置为同步获取数据,否者会获取不到节点对象,导致设置禁用没有效果。
$(function(){
showTree();
setDisabledNode();
});
- JVM patch by Taobao
bookjovi
javaHotSpot
在网上无意中看到淘宝提交的hotspot patch,共四个,有意思,记录一下。
7050685:jsdbproc64.sh has a typo in the package name
7058036:FieldsAllocationStyle=2 does not work in 32-bit VM
7060619:C1 should respect inline and
- 将session存储到数据库中
dcj3sjt126com
sqlPHPsession
CREATE TABLE sessions (
id CHAR(32) NOT NULL,
data TEXT,
last_accessed TIMESTAMP NOT NULL,
PRIMARY KEY (id)
);
<?php
/**
* Created by PhpStorm.
* User: michaeldu
* Date
- Vector
171815164
vector
public Vector<CartProduct> delCart(Vector<CartProduct> cart, String id) {
for (int i = 0; i < cart.size(); i++) {
if (cart.get(i).getId().equals(id)) {
cart.remove(i);
- 各连接池配置参数比较
g21121
连接池
排版真心费劲,大家凑合看下吧,见谅~
Druid
DBCP
C3P0
Proxool
数据库用户名称 Username Username User
数据库密码 Password Password Password
驱动名
- [简单]mybatis insert语句添加动态字段
53873039oycg
mybatis
mysql数据库,id自增,配置如下:
<insert id="saveTestTb" useGeneratedKeys="true" keyProperty="id"
parameterType=&
- struts2拦截器配置
云端月影
struts2拦截器
struts2拦截器interceptor的三种配置方法
方法1. 普通配置法
<struts>
<package name="struts2" extends="struts-default">
&
- IE中页面不居中,火狐谷歌等正常
aijuans
IE中页面不居中
问题是首页在火狐、谷歌、所有IE中正常显示,列表页的页面在火狐谷歌中正常,在IE6、7、8中都不中,觉得可能那个地方设置的让IE系列都不认识,仔细查看后发现,列表页中没写HTML模板部分没有添加DTD定义,就是<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3
- String,int,Integer,char 几个类型常见转换
antonyup_2006
htmlsql.net
如何将字串 String 转换成整数 int?
int i = Integer.valueOf(my_str).intValue();
int i=Integer.parseInt(str);
如何将字串 String 转换成Integer ?
Integer integer=Integer.valueOf(str);
如何将整数 int 转换成字串 String ?
1.
- PL/SQL的游标类型
百合不是茶
显示游标(静态游标)隐式游标游标的更新和删除%rowtyperef游标(动态游标)
游标是oracle中的一个结果集,用于存放查询的结果;
PL/SQL中游标的声明;
1,声明游标
2,打开游标(默认是关闭的);
3,提取数据
4,关闭游标
注意的要点:游标必须声明在declare中,使用open打开游标,fetch取游标中的数据,close关闭游标
隐式游标:主要是对DML数据的操作隐
- JUnit4中@AfterClass @BeforeClass @after @before的区别对比
bijian1013
JUnit4单元测试
一.基础知识
JUnit4使用Java5中的注解(annotation),以下是JUnit4常用的几个annotation: @Before:初始化方法 对于每一个测试方法都要执行一次(注意与BeforeClass区别,后者是对于所有方法执行一次)@After:释放资源 对于每一个测试方法都要执行一次(注意与AfterClass区别,后者是对于所有方法执行一次
- 精通Oracle10编程SQL(12)开发包
bijian1013
oracle数据库plsql
/*
*开发包
*包用于逻辑组合相关的PL/SQL类型(例如TABLE类型和RECORD类型)、PL/SQL项(例如游标和游标变量)和PL/SQL子程序(例如过程和函数)
*/
--包用于逻辑组合相关的PL/SQL类型、项和子程序,它由包规范和包体两部分组成
--建立包规范:包规范实际是包与应用程序之间的接口,它用于定义包的公用组件,包括常量、变量、游标、过程和函数等
--在包规
- 【EhCache二】ehcache.xml配置详解
bit1129
ehcache.xml
在ehcache官网上找了多次,终于找到ehcache.xml配置元素和属性的含义说明文档了,这个文档包含在ehcache.xml的注释中!
ehcache.xml : http://ehcache.org/ehcache.xml
ehcache.xsd : http://ehcache.org/ehcache.xsd
ehcache配置文件的根元素是ehcahe
ehcac
- java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderL
白糖_
javaeclipsespringtomcatWeb
今天学习spring+cxf的时候遇到一个问题:在web.xml中配置了spring的上下文监听器:
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
随后启动
- angular.element
boyitech
AngularJSAngularJS APIangular.element
angular.element
描述: 包裹着一部分DOM element或者是HTML字符串,把它作为一个jQuery元素来处理。(类似于jQuery的选择器啦) 如果jQuery被引入了,则angular.element就可以看作是jQuery选择器,选择的对象可以使用jQuery的函数;如果jQuery不可用,angular.e
- java-给定两个已排序序列,找出共同的元素。
bylijinnan
java
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class CommonItemInTwoSortedArray {
/**
* 题目:给定两个已排序序列,找出共同的元素。
* 1.定义两个指针分别指向序列的开始。
* 如果指向的两个元素
- sftp 异常,有遇到的吗?求解
Chen.H
javajcraftauthjschjschexception
com.jcraft.jsch.JSchException: Auth cancel
at com.jcraft.jsch.Session.connect(Session.java:460)
at com.jcraft.jsch.Session.connect(Session.java:154)
at cn.vivame.util.ftp.SftpServerAccess.connec
- [生物智能与人工智能]神经元中的电化学结构代表什么?
comsci
人工智能
我这里做一个大胆的猜想,生物神经网络中的神经元中包含着一些化学和类似电路的结构,这些结构通常用来扮演类似我们在拓扑分析系统中的节点嵌入方程一样,使得我们的神经网络产生智能判断的能力,而这些嵌入到节点中的方程同时也扮演着"经验"的角色....
我们可以尝试一下...在某些神经
- 通过LAC和CID获取经纬度信息
dai_lm
laccid
方法1:
用浏览器打开http://www.minigps.net/cellsearch.html,然后输入lac和cid信息(mcc和mnc可以填0),如果数据正确就可以获得相应的经纬度
方法2:
发送HTTP请求到http://www.open-electronics.org/celltrack/cell.php?hex=0&lac=<lac>&cid=&
- JAVA的困难分析
datamachine
java
前段时间转了一篇SQL的文章(http://datamachine.iteye.com/blog/1971896),文章不复杂,但思想深刻,就顺便思考了一下java的不足,当砖头丢出来,希望引点和田玉。
-----------------------------------------------------------------------------------------
- 小学5年级英语单词背诵第二课
dcj3sjt126com
englishword
money 钱
paper 纸
speak 讲,说
tell 告诉
remember 记得,想起
knock 敲,击,打
question 问题
number 数字,号码
learn 学会,学习
street 街道
carry 搬运,携带
send 发送,邮寄,发射
must 必须
light 灯,光线,轻的
front
- linux下面没有tree命令
dcj3sjt126com
linux
centos p安装
yum -y install tree
mac os安装
brew install tree
首先来看tree的用法
tree 中文解释:tree
功能说明:以树状图列出目录的内容。
语 法:tree [-aACdDfFgilnNpqstux][-I <范本样式>][-P <范本样式
- Map迭代方式,Map迭代,Map循环
蕃薯耀
Map循环Map迭代Map迭代方式
Map迭代方式,Map迭代,Map循环
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
蕃薯耀 2015年
- Spring Cache注解+Redis
hanqunfeng
spring
Spring3.1 Cache注解
依赖jar包:
<!-- redis -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
- Guava中针对集合的 filter和过滤功能
jackyrong
filter
在guava库中,自带了过滤器(filter)的功能,可以用来对collection 进行过滤,先看例子:
@Test
public void whenFilterWithIterables_thenFiltered() {
List<String> names = Lists.newArrayList("John"
- 学习编程那点事
lampcy
编程androidPHPhtml5
一年前的夏天,我还在纠结要不要改行,要不要去学php?能学到真本事吗?改行能成功吗?太多的问题,我终于不顾一切,下定决心,辞去了工作,来到传说中的帝都。老师给的乘车方式还算有效,很顺利的就到了学校,赶巧了,正好学校搬到了新校区。先安顿了下来,过了个轻松的周末,第一次到帝都,逛逛吧!
接下来的周一,是我噩梦的开始,学习内容对我这个零基础的人来说,除了勉强完成老师布置的作业外,我已经没有时间和精力去
- 架构师之流处理---------bytebuffer的mark,limit和flip
nannan408
ByteBuffer
1.前言。
如题,limit其实就是可以读取的字节长度的意思,flip是清空的意思,mark是标记的意思 。
2.例子.
例子代码:
String str = "helloWorld";
ByteBuffer buff = ByteBuffer.wrap(str.getBytes());
Sy
- org.apache.el.parser.ParseException: Encountered " ":" ": "" at line 1, column 1
Everyday都不同
$转义el表达式
最近在做Highcharts的过程中,在写js时,出现了以下异常:
严重: Servlet.service() for servlet jsp threw exception
org.apache.el.parser.ParseException: Encountered " ":" ": "" at line 1,
- 用Java实现发送邮件到163
tntxia
java实现
/*
在java版经常看到有人问如何用javamail发送邮件?如何接收邮件?如何访问多个文件夹等。问题零散,而历史的回复早已经淹没在问题的海洋之中。
本人之前所做过一个java项目,其中包含有WebMail功能,当初为用java实现而对javamail摸索了一段时间,总算有点收获。看到论坛中的经常有此方面的问题,因此把我的一些经验帖出来,希望对大家有些帮助。
此篇仅介绍用
- 探索实体类存在的真正意义
java小叶檀
POJO
一. 实体类简述
实体类其实就是俗称的POJO,这种类一般不实现特殊框架下的接口,在程序中仅作为数据容器用来持久化存储数据用的
POJO(Plain Old Java Objects)简单的Java对象
它的一般格式就是
public class A{
private String id;
public Str