- pwnable.kr解题write up —— Toddler's Bottle(一)
captain_hwz
securityCTFsecurity
1.fd#include#includecharbuf[32];intmain(intargc,char*argv[],char*envp[]){if(argcunsignedlonghashcode=0x21DD09EC;unsignedlongcheck_password(constchar*p){int*ip=(int*)p;inti;intres=0;for(i=0;i#includevo
- pwnable.kr解题write up —— Toddler's Bottle(二)
captain_hwz
securityCTFsecurity
9.mistake#include#include#definePW_LEN10#defineXORKEY1voidxor(char*s,intlen){inti;for(i=0;i0)){printf("readerror\n");close(fd);return0;}charpw_buf2[PW_LEN+1];printf("inputpassword:");scanf("%10s",pw_b
- 从零开始学howtoheap:解题西湖论剑Storm_note
网络安全我来了
逆向二进制Re网络安全系统安全安全安全架构
how2heap是由shellphish团队制作的堆利用教程,介绍了多种堆利用技术,后续系列实验我们就通过这个教程来学习。环境可参见从零开始配置pwn环境:从零开始配置pwn环境:从零开始配置pwn环境:优化pwn虚拟机配置支持libc等指令-CSDN博客1.题目信息https://github.com/ble55ing/ctfpwn/blob/master/pwnable/ctf/x64/Sto
- [BUUCTF]-PWN:pwnable_hacknote解析
Clxhzg
前端linuxjavascript网络安全安全
先看保护32位,没开pie,got表可修改看ida总的来说就是alloc创建堆块,free释放堆块,show打印堆块内容但alloc处的函数比较特别,他会先申请一个0x8大小的堆来存放与puts相关的指针完整exp:frompwnimport*fromLibcSearcherimport*p=process('./hacknote')p=remote('node5.buuoj.cn',28080)
- Pwnable.kr 提示之 md5-calculator 篇
JackoQm
前前言本人的个人博客网址:www.QmSharing.space,所有的文章都可以在里面找到,欢迎各位大佬前来参观并留下宝贵的建议,大家一起学习一起成长:-)难度分析本题属于综合题,是有一定难度的,但利用的漏洞我们在之前的题目中基本都见到过,所以也不算特别的难.这题唯一一个之前涉及不多的就是canary技术,不过它也并不是很难理解,后面我会大概介绍一下.这题总体是特别有意思的一道题,难度与乐趣具备
- (BUUCTF)pwnable_bf
LtfallQwQ
pwn_writeup网络安全安全系统安全
文章目录前置知识整体思路exp前置知识改got表整体思路这道题看起来是在解析brainfuck,我对这方面的知识可以说是一窍不通,但是看了看代码感觉并不需要我们懂brainfuck。首先我们需要输入一个长度最大为1024的字符串,然后其会逐字符解析该字符串。其中,可以移动指针p指向的内容,初始的p为0x0804A0A0。+和-可以使得指针p指向的内容加一或者减一。通过这些目前我们可以实现任意地址写
- (BUUCTF)pwnable_317
LtfallQwQ
pwn_writeup网络安全系统安全安全
文章目录前置知识fini_array劫持通过fini_array栈迁移来实现ROP整体思路exp前置知识静态编译栈迁移fini_array劫持fini_array劫持若只覆盖array[1]为main_addr,那么只会执行一次main函数便会执行下一个array中的函数。要无限执行某个函数,需要使用这个方式:array[0]覆盖为__libc_csu_finiarray[1]覆盖为另一地址add
- Pwnable.kr 提示之 otp 篇
JackoQm
前前言本人的个人博客网址:www.QmSharing.space,所有的文章都可以在里面找到,欢迎各位大佬前来参观并留下宝贵的建议,大家一起学习一起成长:-)难度分析本题主要考的是知识面,它并没有考什么高超的技术,所以难度来说如果你知道这个知识点,那么这题简单的不行,但如果你不知道(和我一样),那做的就会非常痛苦.基本检查fileotp:ELF64-bitLSBexecutable,x86-64,
- pwnable.kr flag
CodeRambler
pwnable.krflagimage.png题目给了提示,让我们去分析二进制代码。所以我们进IDA去看二进制代码来找到相关信息。image.png在图中我们可以看到这个程序加了UPX壳,所以我们先脱壳。脱壳可以用upx脱壳工具。$sudoaptinstallupx$upx-dflagUltimatePackerforeXecutablesCopyright(C)1996-2013UPX3.91M
- [pwnable.kr]第一题fd
飞速遗忘
题目标题:fd(fd在Linux中是文件描述符的意思,但是在此题中我没看到题干和fd有什么关系.)文字描述:
[email protected](pw:guest)提示使用ssh登录服务器pwnable.kr,端口-p2222.账号fd,密码guest用secureCRT登录查看ls查看.PNG第一步:用ls-l查看文件
- 网鼎杯(4)-pwn
2mpossible
题目链接保护保护还挺多main函数bored函数fmt函数secret函数stack函数主要漏洞点:stack函数有栈溢出,还有puts函数可以泄漏栈的东西secret函数由于每个用户能打开的文件数是一定的,函数没有fclose,一直开最后读进去的就是空的,所以可以绕过memcmp函数去执行qmemcpy函数达到栈溢出读写函数细节类似的题有pwnable.kr的otp(后面做到的时候可以再回顾一下
- 【pwnable.kr】 unlink
weixin_30340745
shellc/c++运维
pwnable.kr第一阶段的最后一题!这道题目就是堆溢出的经典利用题目,不过是把堆块的分配与释放操作用C++重新写了一遍,可参考《C和C++安全编码一书》//不是广告#include#include#includetypedefstructtagOBJ{structtagOBJ*fd;structtagOBJ*bk;charbuf[8];}OBJ;voidshell(){system("/bin
- pwnable.kr-leg WP
Casuall
pwn学习pwnable.krleg
首先看一下源码#include#includeintkey1(){asm("movr3,pc\n");}intkey2(){asm("push{r6}\n""addr6,pc,$1\n""bxr6\n"".code16\n""movr3,pc\n""addr3,$0x4\n""push{r3}\n""pop{pc}\n"".code32\n""pop{r6}\n");}intkey3(){asm(
- pwnable.kr bof
chenmuxin
思路-检查main函数调用了什么main.png-func函数实现了什么功能func.pngfunc汇编.png-如何使key==0xcafebabe,调用system(“/bin/sh”)做法-看到调用了gets,使用命令man查看gets函数定义,可知gets是读取一整行的字符直到结束换行mangets.png-看到字符s(即数组overflows)的大小为-2CH,因此我们的目的是将44(2
- pwnable-1-fd
晴空对晚照
pwnpwn安全
pwn的学习周期确实比较长,需要的前置内容也很多,了解到第一题还算比较简单的,那就先来体验一波~顺带附一波网站链接:网站链接题目WP最后一行给出了ssh链接方式,那就先连接一波第一次连接会有第四行的询问,yes就行(这里windows和linux都可以)当然按一般思路,进来了就先看看有什么文件吧flag应该就是目标文件,还有两个fd这么看的话大概要运行fd,来操作输出咱们的flag那就先输出一下f
- pwnable 笔记 Toddler's Bottle - random
pumpkin9
pwnable.kr一道1point的题#includeintmain(){unsignedintrandom;random=rand();//randomvalue!printf(%u,random);unsignedintkey=0;scanf(%d,&key);if((key^random)==0xdeadbeef){printf(Good!n);system(bincatflag);ret
- pwnable.tw hacknote
N1ch0l4s
pwnable.twpwn
hacknote主要考察:uaf,fastbin数据结构分析程序流程可知,在add部分,创建的数据结构如下所示用图片直观表示,就是所有被分配的chunk数据结构都是puts块+数据块,并且puts块大小固定。注意到每次free的时候两个快都会被free,并且存在uaf,考虑在free两个块之后,一次malloc0x8大小的内容,再执行show,那么malloc(0x8)时候调用的puts函数即可被
- pwnable_hacknote_WP
Benson233
pwn
pwnable_hacknote_WP文章目录pwnable_hacknote_WP检查保护分析ELFAddnoteDeletenotePrintnote利用思路exp检查保护i386架构,RELRO半开,开了Canary和NX,没开PIE。分析ELF先跑一下类似菜单的程序,有增、删、查的操作。IDA反编译后发现主函数主要就是根据选项选择菜单内相应功能的作用,若输入范围之外的数字则会出现错误提示并
- BUUCTF-UAF漏洞 pwnable_hacknote
三哥sange
PWNpwn
BUUCTF-UAF漏洞pwnable_hacknote好久不学习pwn了,今天学习突然就开窍了,开心,好像离大神又近了一步就不静态分析了,直接动态分析首先创建两个大小为0x80的堆快,结构如图所示,可以看到每个堆块包含了两个部分然后我们释放这两个堆块,可以看到被存放进了fastbin中之后我们创建一个payload,0x8个大小的,构成puts(read_got)的结构,为了之后申请时直接去执行
- pwnable.tw——hacknote
「已注销」
CTF
很少做pwn,之前也只懂点rop,现在跟着练练pwn的堆利用吧,pwnable.tw上的一题hacknote,比较纯粹的uaf题目,还好不久前看了点glibc内存管理的东西,可以派上用场了。逆向很轻松,那为什么不直接给源码呢。。。根据add_note函数很容易了解note的结构体特征unsignedintadd_node(){note*v0;//ebxsignedinti;//[esp+Ch][e
- pwnable.tw_hacknote_uaf利用
Jc^
uaf堆入门
一道大家都说入uaf比较好的例题,将自己学习的uaf的历程记录一下,来自某大佬一句励志的话解题思路1.查看文件信息,安全机制2.IDA审计3.分析漏洞点4.编写EXP1.基本信息安全机制运行IDA审计1.add2.del3.print3.分析漏洞点1.在free的时候,没有将指针置为NULL,这就会造成,第二次使用的时候,利用这个指针达到一下目的2.将获取的地址,放入chunk头的部分,只要调用p
- pwnable.tw hacknote write up
苍崎青子
PWN
程序分析:程序有四个操作:1.Addnote2.Deletenote3.Printnote4.Exit1.Addnote在bss段中存放note的指针,每一个note包含两个堆块,add的过程中第一个堆块的数据区的开始四字节存放调用puts的函数地址(0x804862b),随后四个字节存放后面存放content的堆块的地址2.Deletenote漏洞点发生在Delete操作中,在调用free函数的
- [BUUCTF]PWN——pwnable_hacknote
Angel~Yan
BUUCTF刷题记录PWN
pwnable_hacknote附件步骤:例行检查,32位程序,开启了nx和canary保护本地试运行看一下大概的情况,熟悉的堆的菜单32位ida载入add()gdb看一下堆块的布局更方便理解delete()show()利用思路:使用uaf泄露libc,计算system,执行system(‘/bin/sh’)获取shell泄露libcprint_note的打印功能可以帮助泄露地址。先addchun
- buuoj刷题记录 - pwnable_hacknote
Suspend.
pwn入门安全
查看程序保护:拖进IDA分析一下,Add函数正常,先创建八个字节的内存structNode{{void*func_addr;void*content;}然后根据输入的size开辟相应大小的内存问题存在于DelNote函数中,free后没有置0看一下PrintNote函数:根据八个字节的前四个字节调用对应的函数,并把这个八个字节的首地址作为参数若Note被free后,还是可以调用Print函数的,由
- pwnable.tw之hacknote
Kdongdong
ctfpwnuafmalloc
uaf漏洞产生的主要原因是释放了一个堆块后,并没有将该指针置为NULL,这样导致该指针处于悬空的状态(有的地方翻译为迷途指针),同样被释放的内存如果被恶意构造数据,就有可能会被利用。再怎么表述起始还不如真的拿一道题自己调自己看内存看堆状态来的好理解。这也是我觉得ctf-pwn的意义所在,可以把一些漏洞抽象出来以题的形式,作为学习这方面的一个抓手。此篇尽量做的细致基础,但仍然假设读者已经初步了解ua
- pwnable_hacknote 5/100
cut_maize
PWNlinuxgnu服务器
uaf漏洞利用sh“;”间隔执行命令exp:frompwnimport*fromLibcSearcherimport*local_file='./hacknote'#local_libc='/lib/x86_64-linux-gnu/libc-2.23.so'#remote_libc='./libc-2.23.so'select=1ifselect==0:p=process(local_file)
- [pwnable] hacknote wp
乐你带我走吧
pwn
title:hacknotedescription:pwnable|heap|UAF##题目考点UAF##解题思路32位elf,菜单题,提供了add,del,print三个功能,依次查看:add_note():unsignedintsub_8048646(){_DWORD*v0;//ebxsignedinti;//[esp+Ch][ebp-1Ch]intsize;//[esp+10h][ebp-1
- 【PWN刷题】Pwnable-hacknote
QY不懂
Pwn刷题之路安全网络安全
题目来源:https://pwnable.tw/challenge目录前言一、Pwnable-hacknote1.检查保护2.IDA分析3.漏洞利用:4.EXP总结前言回顾经典老题。一、Pwnable-hacknote1.检查保护32位没开PIE,堆题一般全开。2.IDA分析①太经典辣,堆菜单题。三个功能,add、delete和show。②看堆题先看delete,果然free后没有置空,存在UAF
- BUUCTF-PWN-pwnable_hacknote-UAF
Rt1Text
BUUCTF大数据pwn安全linuxc++
1.checksec+运行标准的菜单模式canary和NX保护2.32位IDA1.sub_8048646()unsignedintsub_8048646(){intv0;//ebxinti;//[esp+Ch][ebp-1Ch]intsize;//[esp+10h][ebp-18h]charbuf[8];//[esp+14h][ebp-14h]BYREFunsignedintv5;//[esp+1
- pwnable_hacknote
YameMres
Buuoj刷题安全
pwnable_hacknoteArch:i386-32-littleRELRO:PartialRELROStack:CanaryfoundNX:NXenabledPIE:NoPIE(0x8047000)32位,没开PIEmain部分就不贴了,直接贴主要的函数unsignedintADD(){intv0;//ebxinti;//[esp+Ch][ebp-1Ch]intsize;//[esp+10h
- linux系统服务器下jsp传参数乱码
3213213333332132
javajsplinuxwindowsxml
在一次解决乱码问题中, 发现jsp在windows下用js原生的方法进行编码没有问题,但是到了linux下就有问题, escape,encodeURI,encodeURIComponent等都解决不了问题
但是我想了下既然原生的方法不行,我用el标签的方式对中文参数进行加密解密总该可以吧。于是用了java的java.net.URLDecoder,结果还是乱码,最后在绝望之际,用了下面的方法解决了
- Spring 注解区别以及应用
BlueSkator
spring
1. @Autowired
@Autowired是根据类型进行自动装配的。如果当Spring上下文中存在不止一个UserDao类型的bean,或者不存在UserDao类型的bean,会抛出 BeanCreationException异常,这时可以通过在该属性上再加一个@Qualifier注解来声明唯一的id解决问题。
2. @Qualifier
当spring中存在至少一个匹
- printf和sprintf的应用
dcj3sjt126com
PHPsprintfprintf
<?php
printf('b: %b <br>c: %c <br>d: %d <bf>f: %f', 80,80, 80, 80);
echo '<br />';
printf('%0.2f <br>%+d <br>%0.2f <br>', 8, 8, 1235.456);
printf('th
- config.getInitParameter
171815164
parameter
web.xml
<servlet>
<servlet-name>servlet1</servlet-name>
<jsp-file>/index.jsp</jsp-file>
<init-param>
<param-name>str</param-name>
- Ant标签详解--基础操作
g21121
ant
Ant的一些核心概念:
build.xml:构建文件是以XML 文件来描述的,默认构建文件名为build.xml。 project:每个构建文
- [简单]代码片段_数据合并
53873039oycg
代码
合并规则:删除家长phone为空的记录,若一个家长对应多个孩子,保留一条家长记录,家长id修改为phone,对应关系也要修改。
代码如下:
- java 通信技术
云端月影
Java 远程通信技术
在分布式服务框架中,一个最基础的问题就是远程服务是怎么通讯的,在Java领域中有很多可实现远程通讯的技术,例如:RMI、MINA、ESB、Burlap、Hessian、SOAP、EJB和JMS等,这些名词之间到底是些什么关系呢,它们背后到底是基于什么原理实现的呢,了解这些是实现分布式服务框架的基础知识,而如果在性能上有高的要求的话,那深入了解这些技术背后的机制就是必须的了,在这篇blog中我们将来
- string与StringBuilder 性能差距到底有多大
aijuans
之前也看过一些对string与StringBuilder的性能分析,总感觉这个应该对整体性能不会产生多大的影响,所以就一直没有关注这块!
由于学程序初期最先接触的string拼接,所以就一直没改变过自己的习惯!
- 今天碰到 java.util.ConcurrentModificationException 异常
antonyup_2006
java多线程工作IBM
今天改bug,其中有个实现是要对map进行循环,然后有删除操作,代码如下:
Iterator<ListItem> iter = ItemMap.keySet.iterator();
while(iter.hasNext()){
ListItem it = iter.next();
//...一些逻辑操作
ItemMap.remove(it);
}
结果运行报Con
- PL/SQL的类型和JDBC操作数据库
百合不是茶
PL/SQL表标量类型游标PL/SQL记录
PL/SQL的标量类型:
字符,数字,时间,布尔,%type五中类型的
--标量:数据库中预定义类型的变量
--定义一个变长字符串
v_ename varchar2(10);
--定义一个小数,范围 -9999.99~9999.99
v_sal number(6,2);
--定义一个小数并给一个初始值为5.4 :=是pl/sql的赋值号
- Mockito:一个强大的用于 Java 开发的模拟测试框架实例
bijian1013
mockito单元测试
Mockito框架:
Mockito是一个基于MIT协议的开源java测试框架。 Mockito区别于其他模拟框架的地方主要是允许开发者在没有建立“预期”时验证被测系统的行为。对于mock对象的一个评价是测试系统的测
- 精通Oracle10编程SQL(10)处理例外
bijian1013
oracle数据库plsql
/*
*处理例外
*/
--例外简介
--处理例外-传递例外
declare
v_ename emp.ename%TYPE;
begin
SELECT ename INTO v_ename FROM emp
where empno=&no;
dbms_output.put_line('雇员名:'||v_ename);
exceptio
- 【Java】Java执行远程机器上Linux命令
bit1129
linux命令
Java使用ethz通过ssh2执行远程机器Linux上命令,
封装定义Linux机器的环境信息
package com.tom;
import java.io.File;
public class Env {
private String hostaddr; //Linux机器的IP地址
private Integer po
- java通信之Socket通信基础
白糖_
javasocket网络协议
正处于网络环境下的两个程序,它们之间通过一个交互的连接来实现数据通信。每一个连接的通信端叫做一个Socket。一个完整的Socket通信程序应该包含以下几个步骤:
①创建Socket;
②打开连接到Socket的输入输出流;
④按照一定的协议对Socket进行读写操作;
④关闭Socket。
Socket通信分两部分:服务器端和客户端。服务器端必须优先启动,然后等待soc
- angular.bind
boyitech
AngularJSangular.bindAngularJS APIbind
angular.bind 描述: 上下文,函数以及参数动态绑定,返回值为绑定之后的函数. 其中args是可选的动态参数,self在fn中使用this调用。 使用方法: angular.bind(se
- java-13个坏人和13个好人站成一圈,数到7就从圈里面踢出一个来,要求把所有坏人都给踢出来,所有好人都留在圈里。请找出初始时坏人站的位置。
bylijinnan
java
import java.util.ArrayList;
import java.util.List;
public class KickOutBadGuys {
/**
* 题目:13个坏人和13个好人站成一圈,数到7就从圈里面踢出一个来,要求把所有坏人都给踢出来,所有好人都留在圈里。请找出初始时坏人站的位置。
* Maybe you can find out
- Redis.conf配置文件及相关项说明(自查备用)
Kai_Ge
redis
Redis.conf配置文件及相关项说明
# Redis configuration file example
# Note on units: when memory size is needed, it is possible to specifiy
# it in the usual form of 1k 5GB 4M and so forth:
#
- [强人工智能]实现大规模拓扑分析是实现强人工智能的前奏
comsci
人工智能
真不好意思,各位朋友...博客再次更新...
节点数量太少,网络的分析和处理能力肯定不足,在面对机器人控制的需求方面,显得力不从心....
但是,节点数太多,对拓扑数据处理的要求又很高,设计目标也很高,实现起来难度颇大...
- 记录一些常用的函数
dai_lm
java
public static String convertInputStreamToString(InputStream is) {
StringBuilder result = new StringBuilder();
if (is != null)
try {
InputStreamReader inputReader = new InputStreamRead
- Hadoop中小规模集群的并行计算缺陷
datamachine
mapreducehadoop并行计算
注:写这篇文章的初衷是因为Hadoop炒得有点太热,很多用户现有数据规模并不适用于Hadoop,但迫于扩容压力和去IOE(Hadoop的廉价扩展的确非常有吸引力)而尝试。尝试永远是件正确的事儿,但有时候不用太突进,可以调优或调需求,发挥现有系统的最大效用为上策。
-----------------------------------------------------------------
- 小学4年级英语单词背诵第二课
dcj3sjt126com
englishword
egg 蛋
twenty 二十
any 任何
well 健康的,好
twelve 十二
farm 农场
every 每一个
back 向后,回
fast 快速的
whose 谁的
much 许多
flower 花
watch 手表
very 非常,很
sport 运动
Chinese 中国的
- 自己实践了github的webhooks, linux上面的权限需要注意
dcj3sjt126com
githubwebhook
环境, 阿里云服务器
1. 本地创建项目, push到github服务器上面
2. 生成www用户的密钥
sudo -u www ssh-keygen -t rsa -C "
[email protected]"
3. 将密钥添加到github帐号的SSH_KEYS里面
3. 用www用户执行克隆, 源使
- Java冒泡排序
蕃薯耀
冒泡排序Java冒泡排序Java排序
冒泡排序
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
蕃薯耀 2015年6月23日 10:40:14 星期二
http://fanshuyao.iteye.com/
- Excle读取数据转换为实体List【基于apache-poi】
hanqunfeng
apache
1.依赖apache-poi
2.支持xls和xlsx
3.支持按属性名称绑定数据值
4.支持从指定行、列开始读取
5.支持同时读取多个sheet
6.具体使用方式参见org.cpframework.utils.excelreader.CP_ExcelReaderUtilTest.java
比如:
Str
- 3个处于草稿阶段的Javascript API介绍
jackyrong
JavaScript
原文:
http://www.sitepoint.com/3-new-javascript-apis-may-want-follow/?utm_source=html5weekly&utm_medium=email
本文中,介绍3个仍然处于草稿阶段,但应该值得关注的Javascript API.
1) Web Alarm API
&
- 6个创建Web应用程序的高效PHP框架
lampcy
Web框架PHP
以下是创建Web应用程序的PHP框架,有coder bay网站整理推荐:
1. CakePHP
CakePHP是一个PHP快速开发框架,它提供了一个用于开发、维护和部署应用程序的可扩展体系。CakePHP使用了众所周知的设计模式,如MVC和ORM,降低了开发成本,并减少了开发人员写代码的工作量。
2. CodeIgniter
CodeIgniter是一个非常小且功能强大的PHP框架,适合需
- 评"救市后中国股市新乱象泛起"谣言
nannan408
首先来看百度百家一位易姓作者的新闻:
三个多星期来股市持续暴跌,跌得投资者及上市公司都处于极度的恐慌和焦虑中,都要寻找自保及规避风险的方式。面对股市之危机,政府突然进入市场救市,希望以此来重建市场信心,以此来扭转股市持续暴跌的预期。而政府进入市场后,由于市场运作方式发生了巨大变化,投资者及上市公司为了自保及为了应对这种变化,中国股市新的乱象也自然产生。
首先,中国股市这两天
- 页面全屏遮罩的实现 方式
Rainbow702
htmlcss遮罩mask
之前做了一个页面,在点击了某个按钮之后,要求页面出现一个全屏遮罩,一开始使用了position:absolute来实现的。当时因为画面大小是固定的,不可以resize的,所以,没有发现问题。
最近用了同样的做法做了一个遮罩,但是画面是可以进行resize的,所以就发现了一个问题,当画面被reisze到浏览器出现了滚动条的时候,就发现,用absolute 的做法是有问题的。后来改成fixed定位就
- 关于angularjs的点滴
tntxia
AngularJS
angular是一个新兴的JS框架,和以往的框架不同的事,Angularjs更注重于js的建模,管理,同时也提供大量的组件帮助用户组建商业化程序,是一种值得研究的JS框架。
Angularjs使我们可以使用MVC的模式来写JS。Angularjs现在由谷歌来维护。
这里我们来简单的探讨一下它的应用。
首先使用Angularjs我
- Nutz--->>反复新建ioc容器的后果
xiaoxiao1992428
DAOmvcIOCnutz
问题:
public class DaoZ {
public static Dao dao() { // 每当需要使用dao的时候就取一次
Ioc ioc = new NutIoc(new JsonLoader("dao.js"));
return ioc.get(