第一篇:实验4-4的实验报告
电 子 科 技 大 学
实
验
报
告
学生姓名:
学 号:
指导教师:实验地点:主楼A2-413-1
实验时间:
一、实验室名称:主楼A2-413-1
二、实验项目名称:跨站攻击实验
三、实验学时: 1 学时
四、实验原理:
1.什么是跨站攻击?
定义一:即Cross Site Script Execution(通常简写为XSS)是指攻击者利用网站程序对用户输入过滤不足,输入可以显示在页面上对其他用户造成影响的HTML代码,从而盗取用 户资料、利用用户身份进行某种动作或者对访问者进行病毒侵害的一种攻击方式。
定义二:指入侵者在远程WEB页面的HTML代码中插入具有恶意目的的数据,用户认为该页面是可信赖的,但是当浏览器下载该页面,嵌入其中的脚本将被解释执行。
由于HTML语言允许使用脚本进行简单交互,入侵者便通过技术手段在某个页面里插入一个恶意HTML代码,例如记录论坛保存的用户信息(Cookie),由于Cookie保存了完整的用户名和密码资料,用户就会遭受安全损失。如这句简单的Javascript脚本就能轻易获取用户信息:alert(document.cookie),它会弹出一个包含用户信息的消息框。入侵者运用脚本就能把用户信息发送到他们自己的记录页面中,稍做分析便获取了用户的敏感信息。2.跨站漏洞成因 成因很简单,就是因为程序没有对用户提交的变量中的HTML代码进行过滤或转换。3.防范跨站攻击
对于普通用户而言:
在你的WEB浏览器上禁用java脚本,具体方法,先打开你的IE的Internet选项,切换到“安全”页,有个“自定义”级别,点击出现如图8-1所示窗口,禁用就可以了。
图8-1
但是好象不太可能,因为一旦禁用,很多功能就丧失了,这个方法是下策。
还有不要访问包含〈〉字符的连接,当然一些官方的URL不会包括任何脚本元素。
对于开发人员而言:
如果你的站点程序含论坛,留言板,以及其他程序中含提交数据格式的。需要对提交数据进行过滤,如:转换掉“<”和“>”,使用户不能构造Html标记;过滤掉 “:”和“&”,使用户不能将标记的属性设为Script;过滤掉空格,使用户不能引发事件机制等。
五、实验目的: 1.了解跨站攻击产生原因 2.了解跨站攻击所能产生的效果 3.了解防范跨站攻击的方法
六、实验内容:
1.编写简单的跨站攻击程序。2.编写程序实现盗取用户cookie。
七、实验器材(设备、元器件):
PC微机一台、SimpleNAD网络实验教学系统
八、实验步骤:
本实验在windowsXP下使用自行编写的例子完成,例子本身比较简单,仅供原理说明及效果演示。读者如有兴趣,可以自行寻找具有xss漏洞的网站进行相应实验。
1.跨站攻击原理及效果展示
下面将通过一个简单例子来说明跨站攻击的原理及效果
首先打开浏览器,在地址栏中输入“http://127.0.0.1:8080/xss1/input.htm”在打开的页面中的文本框中输入任意字符串,比如:“hello world!”,如图8-2:
图8-2
点击“提交”按钮后,打开的新页面将刚才输入的内容显示了出来。如图8-3:
图8-3
可见本页面的功能是将用户填写的内容原封不动显示出来。
在浏览器中重新打开“http://127.0.0.1:8080/xss1/input.htm”,在文本框中输入如下内容:“”,并点击输入。如图8-4:
图8-4
这时,可以发现并没有按照预想结果,将刚才输入的字符串如实显示出来,而是把其当一段脚本加以执行,弹出了一个弹出框,如图8-5:
图8-5
如果我们将输入的内容改为:“”,点击“提交”按钮后,将会跳转到百度的首页,如果我们将链接地址改为预先构造好的恶意页面将会对查看该页面内容的用户造成很大的威胁。2.跨站盗取用户cookie 下面同样通过一个简单例子对利用跨站漏洞进行cookie内容的盗取。首先,打开浏览器在地址栏中输入:“http://127.0.0.1:8080/xss2/logtc.asp”;在打开的页面中,“用户名”和“留言”栏分别输入任意的字符串,比如:“匿名”和“你好”,如图8-6:
图8-6 点击“提交”按钮后,刚才所输入的内容将被显示出来。如图8-7:
图8-7
可见用户填写的内容在提交后,将在同一页面显示出来。
在浏览器中重新打开“http://127.0.0.1:8080/xss2/logtc.asp”,在文本框中输入如下内容:“”,并点击输入。如图8-8:
图8-8
随后,可以发现用户cookie的内容在弹出框中被显示出来了,如图8-9
图8-9
对留言栏输入的内容稍加修改,就可以将用户cookie的内容记录下来,比如在留言栏中输入“http://localhost/xss2/tc.asp? msg=’ + document.cookie)”(其中tc.asp实现了cookie文件的写入,在实践中也可以自行编写相应代码),就可以将相应内容记录到文件中,如图8-10:
图8-10
九、实验数据及结果分析:
十、实验结论:
如果对用户输入内容未加过滤,然后又将其原封不动在某个某个页面显示出来,就会产生夸张漏洞。利用跨站漏洞攻击者可以实现盗取用户信息,将用户引导有恶意代码的页面等攻击。
十一、总结及心得体会:
通过本次实验,基本了解跨站攻击产生原理,也经过具体的实验操作,看到了跨站攻击所能产生的效果,同时也了解了防范跨站攻击的方法。
十二、对本实验过程及方法、手段的改进建议:无
报告评分:
指导教师签字:
第二篇:交换机实验 实验报告
交换机实验II 实验目的
1.理解掌握环路对网络造成的影响,掌握环路的自检测的配置; 2.理解路由的原理,掌握三层交换设备路由的配置方法 3.掌握DHCP的原理以及其配置方法
实验步骤
配置交换机的IP地址,及基本的线路连接等; 实验1:
①.用独立网线连接同一台交换机的任意两个端口时期形成自环
②.对交换机的两个端口进行配置,开启所有端口的环路检测功能、设置检测周期等属性 实验2:
①.按图1方式对三层交换机的VLAN、端口进行配置
②.在交换机中分别对VLAN的IP地址进行配置
③.启动三层交换机的IP路由
④.设置PC-A、PC-B的IP地址,分别将它们的网关设置为所属三层交换机VLAN的IP地址
⑤.通过Ping验证主机A、B之间的互通状况 实验3:
三层交换机作为DHCP服务器,两台PC-A和PC-B,分别从交换机上获取IP地址。PC-C手动配置IP地址。
①.按图2方式建立主机A、B、C与三层交换机间的连接,配置交换机的IP地址
②.配置三层交换机的DHCP地址池属性
③.启动DHCP服务
④.(1)查看主机A、B能否正确的获取到给定范围内IP地址,通过Ping查看网关、交换机之间的互通情况;(2)拔掉主机B的网线,将主机C的IP地址设置为主机B所获取的到的IP地址,然后再插上B机网线,查看其是否能获取到不同的IP地址;(3)分别重启主机A、B及交换机,查看A、B获取到的IP地址是否和前一次相同。
图1.三层路由连接图
图2.DHCP连接图
实验结果
实验1:环路测试
交换机出现环路的自检测结果:
实验2:路由配置:
主机A连接交换机端口2,划分为vlan10,端口IP地址为192.168.1.1。主机IP地址192.168.1.23;
主机B连接交换机端口10,划分为vlan20,端口IP地址为192.168.2.1。主机IP地址192.168.2.27;
在未设置IP routing之前主机A、B分属于不同网段,因此它们不能互通,设置后通过路由则可相互联通:
实验三:DHCP配置和验证:
主机A、B、C分别连接到交换机的端口2,端口18和端口10上。其中主机A、B的IP地址自动获取,主机C的IP地址则手动配置。
主机A通过DHCP获取的IP地址(192.168.1.211)
主机B通过DHCO获取到的IP地址(192.168.1.210)
测试主机A与主机C的互通性(可连通)
测试主机B与主机A、C之间的互通性(可连通)
当主机C配置为主机B获取到的IP地址是会产生IP地址冲突的错误提示:
配置的主机C的IP地址与主机B的IP地址相冲突
主机B网线重新连接后获取到的新的IP地址
交换机重新启动后A、B主机自动获取到的IP地址信息:
主机A自动获取的IP地址
主机B自动获取的IP地址
DHCP可分配IP地址池内IP数目小于申请的主机数目时实验验证情况:(可分配的IP地址为192.168.1.210 — 192.168.1.212),此时连接主机A、B、C、D。
主机D自动获取IP地址的结果
实验与结果分析
环路问题:
分为第二层环路和第三层环路,所有环路的形成都是由于目的路径不明确导致混乱而造成的。例如第二层,一个广播信息经过两个交换机的时候会不断恶性循环的产生广播造成环路,而第三层环路则是原路由意外不能工作,造成路由通告错误,形成一个恶性循环。传统的二层预防技术主要有STP(Spanning tree)来预防,STP在不断的修改和更新中,产生了诸如STP/RSTP/MSTP等多个版本,大家可根据各自的组网规划来选择应用,但是STP的配置复杂度,以及协议本身的开销通常都是网络管理人员比较头痛的事情。
解决因环路(自环或外环)对网络造成的影响,能够提高网络的自检错性、容错性和健壮性。环路检测的过称为:对交换机的每个端口周期性的发送回路检测(Loopback-detection)数据包;交换机查看端口收到包的CPUMAC字段,如果其中存的是本交换机的MAC,则本交换机的某些端口形成环路,否则将其丢弃,出现环路后,交换机会关闭端口号较大的端口以消除环路。图1中反映了在交换机开启所有端口的环路检测功能后每隔30秒检测到的信息以及对端口的关闭等操作信息。
三层路由意义和工作过程: 实现不同VLAN间主机的通信,通过配置VLAN能够有效地控制广播域的大小。在同一VLAN内的主机间的通信不需要经过交换机的路由处理可直接到达目的主机,当不同VLAN间通讯时,数据包先转发至路由器,由路由器查询其路由转发表选择正确的端口间数据包转发到目的VLAN的交换机,再由目的VLAN内交换机将数据包转发至目的主机。其中扮演主要角色的即为交换机的路由功能,如果没有设置相关属性则不同VLAN间不能通讯。
因此在图3的验证实验中,通过路由器的转发功能实现了分别位于VLAN10和VLAN20中主机A、B之间的通信,在未配置IP Routing之前VLAN10和VLAN20分属不同网段(A、B也属于不同网段),因此不能实现通信,配置之后路由器(三层交换设备)可通过内部路由转发表实现数据的转发和通信。
DHCP工作过程与实验分析:
即动态主机配置协议(Dynamic Host Configuration Protocol),是一个局域网的网络协议,使用UDP协议工作,主要有两个用途:给内部网络或网络服务供应商自动分配IP地址,是使内部网络管理员能够集中管理(从中心结点监控)和自动分配IP 网络地址的通信协议。当某台计算机移到网络中的其它位置时,能自动收到新的IP 地址。DHCP 服务器从地址池中为客户端选择并分配IP 地址及其他相关参数当作为DHCP服务器的设备收到客户端发来的DHCP 请求时,将从地址池中挑选一个空闲的IP 地址。
DHCP工作过程:
当 DHCP客户端第一次登录网络的时候,也就是客户发现本机上没有任何 IP 数据设定,它会向网络发出一个 DHCP DISCOVER封包(广播包)。因为客户端还不知道自己属于哪一个网络,所以封包的来源地址会为 0.0.0.0,而目的地址则为 255.255.255.255,然后再附上 DHCP discover 的信息,向网络进行广播。如果都没有得到DHCP服务器的响应,客户端则会显示错误信息,宣告 DHCP discover 的失败。之后,基于使用者的选择,系统会继续在 5 分钟之后再重复一次 DHCP discover 的过程。
当 DHCP服务器监听到客户端发出的 DHCP discover 广播后,它会从那些还没有租出的地址范围内,选择最前面的空置 IP,连同其它 TCP/IP 设定,响应给客户端一个 DHCP OFFER封包。由于客户端在开始的时候还没有 IP 地址,所以在其 DHCP discover封包内会带有其 MAC 地址信息,并且有一个 XID 编号来辨别该封包,DHCP服务器响应的 DHCP offer 封包则会根据这些资料传递给要求租约的客户。根据服务器端的设定,DHCP offer封包会包含一个租约期限的信息。
如果客户端收到网络上多台 DHCP 服务器的响应,只会挑选其中一个 DHCP offer 而已(通常是最先抵达的那个),并且会向网络发送一个DHCP request广播封包,告诉所有 DHCP 服务器它将指定接受哪一台服务器提供的 IP 地址。同时,客户端还会向网络发送一个 ARP封包,查询网络上面有没有其它机器使用该 IP 地址;如果发现该 IP 已经被占用,客户端则会送出一个 DHCPDECLINE 封包给 DHCP服务器,拒绝接受其 DHCP offer,并重新发送 DHCP discover 信息。事实上,并不是所有 DHCP客户端都会无条件接受 DHCP服务器的 offer,尤其这些主机安装有其它 TCP/IP 相关的客户软件。客户端也可以用 DHCP request 向服务器提出 DHCP 选择,而这些选择会以不同的号码填写在 DHCP Option Field 里面。
当 DHCP服务器接收到客户端的 DHCP request 之后,会向客户端发出一个DHCPACK 响应,以确认 IP 租约的正式生效,标志着一次DHCP的工作过程完成。
图4—6反映了主机A、B通过自动获取IP地址方式由三层交换机动态分配IP后,各自得到的IP地址,由于A、B、C连接与同一台交换设备上,由没有VLAN划分等因素,所以它们之间不论是自动获取IP地址还是手动配置IP地址(不冲突的前提下)都能相互连通。当为主机C配置成已得到自动分配IP地址的主机B的IP地址时,自然会出现IP地址冲突的出错信息提示。当B网线重新链接时,相当于重新加入的客户端,交换机会从地址池中顺序选择下一个未分配的IP地址给新的请求用户。因此主机B会获得新新的IP地址,并且其值是主机C的IP地址的下一个邻接IP地址(在未超出可分配的IP地址范围条件下)。图7 —10中反映了上述描述的结果。
图11中显示了一种造成IP地址动态分配失败的情形:可分配的IP地址数仅有3个,而由4台主机请求分配IP地址,当可分配地址全部分配给主机A、B、C后,主机D的请求不能得到满足,因此未得到给定范围内的合理IP地址。
第三篇:实验一 实验报告
网 络 程 序 设 实验报告
实验名称:Winsock编程接口实验 实验类型: 验 证 型
计
一、实验目的
掌握Winsock的启动和初始化;
掌握gethostname(),gethostbyname(),GetAdaptersInfo()等信息查询函数的使用。
二、实验设计
实验内容:
1、编写程序能同时实现对多个域名的解析。比如在控制台输入:getip www.xiexiebang.com对应的IP地址列表。
2、编写程序获取并输出本地主机的所有适配器的IP地址,子网掩码,默认网关,MAC地址。
根据实验内容编写程序:
1、对相关域名进行解析,利用gethostbyname()完成解析,用到的结构体为:
struct hostent{ char FAR*
h_name;char FAR* FAR* h_aliases;short
h_addrtype;short
h_length;char FAR* FAR* h_addr_list;}
得到的IP地址列表由h_addr_list存储;
2、利用GetAdaptersInfo()函数获得本地主机的相关信息,通过IP_ADAPTER_INFO结构体返回所需信息。
IP_ADAPTER_INFO的定义如下: typedef struct _IP_ADAPTER_INFO {
struct _IP_ADAPTER_INFO* Next;
DWORD ComboIndex;
char AdapterName[MAX_ADAPTER_NAME_LENGTH + 4];
char Description[MAX_ADAPTER_DESCRIPTION_LENGTH + 4];
UINT AddressLength;
BYTE Address[MAX_ADAPTER_ADDRESS_LENGTH];
DWORD Index;
UINT Type;
UINT DhcpEnabled;
PIP_ADDR_STRING CurrentIpAddress;
IP_ADDR_STRING IpAddressList;
IP_ADDR_STRING GatewayList;
IP_ADDR_STRING DhcpServer;
BOOL HaveWins;
IP_ADDR_STRING PrimaryWinsServer;
IP_ADDR_STRING SecondaryWinsServer;
time_t LeaseObtained;
time_t LeaseExpires;
} IP_ADAPTER_INFO, *PIP_ADAPTER_INFO;
三、实验过程(包含实验结果)
1、分析题目,编写程序;
2、将编写的程序进行编译、运行,输入题目给定的内容,完成题目要求; 结果如下:
第1题:
第2题:
四、讨论与分析
思考题:
1、Winsock初始化的作用:只有调用了WSAStartup()进行初始化之后,应用程 序才能调用其他Windows Sockets API函数,实现网络通信;
2、函数原型为:
DWORD GetAdaptersInfo(PIP_ADAPTER_INFO pAdapterInfo,//接受数据的缓冲区
PULONG pOutBufLen
// 数据的长度大小);
3、域名解析时出现域名对应多个IP,原因:该域名存在于多个服务器。
五、实验者自评
通过本次实验,我掌握了Winsock的启动和初始化以及gethostname(),gethostbyname(),GetAdaptersInfo()等函数查询的使用,加深了以前对课本知识的认识程度。
六、附录:关键代码(给出适当注释,可读性高)
第1题代码:
////////////////////////////////////////////////// // GetAllIps.cpp文件
//#include “../common/InitSock.h” #include
using namespace std;
#pragma comment(lib, “WS2_32”)// 链接到WS2_32.lib //CInitSock initSock;// 初始化Winsock库
void main(){
char szMessage[256];// 取得本地主机名称
// 初始化
WSADATA wsaData;if(WSAStartup(MAKEWORD(2,2), &wsaData)!= 0){
exit(0);}
// 通过主机名得到地址信息
printf(“ Get IP::”);gets(szMessage);
// 获取主机信息
hostent *pHost = ::gethostbyname(szMessage);
// 打印出所有IP地址
in_addr addr;for(int i = 0;;i++){
char *p = pHost->h_addr_list[i];
if(p == NULL)
break;
memcpy(&addr.S_un.S_addr, p, pHost->h_length);
char *szIp = ::inet_ntoa(addr);
printf(“ 服务器 %s IP地址:%s n ”,szMessage, szIp);
printf(“服务器名字: %s n”,pHost->h_name);}
/////////////////////////// ::WSACleanup();
}
第2题代码:
// 获取并输出本地主机的所有适配器的IP地址,子网掩码,默认网关,MAC地址
#include
void main(){ // 定义变量
IP_ADAPTER_INFO *pAdapterInfo;ULONG ulOutBufLen;DWORD dwRetVal;PIP_ADAPTER_INFO pAdapter;
pAdapterInfo =(IP_ADAPTER_INFO *)malloc(sizeof(IP_ADAPTER_INFO));ulOutBufLen = sizeof(IP_ADAPTER_INFO);// 第一次获取适配器信息,得到ulOutBufLen的实际大小
if(GetAdaptersInfo(pAdapterInfo, &ulOutBufLen)!= ERROR_SUCCESS){
free(pAdapterInfo);
pAdapterInfo =(IP_ADAPTER_INFO *)malloc(ulOutBufLen);} // 第二次获取适配器信息,获得了pAdapterInfo信息
if(dwRetVal = GetAdaptersInfo(pAdapterInfo, &ulOutBufLen)!= ERROR_SUCCESS){
cout<<“GetAdapterInfo Error!”< // 打印MAC地址信息、子网掩码以及网关 pAdapter = pAdapterInfo;while(pAdapter){ cout<<“MAC Address: ”; for(int i=0;i AddressLength;i++) { if(i ==(pAdapter->AddressLength-1)) { cout< } else { cout< } } cout< cout<<“IP 地址:”< IpAddressList.IpAddress.String< cout<<“子网掩码 :”< IpAddressList.IpMask.String< cout<<“网关 :”< IpAddressList.IpAddress.String< cout<<“****************************************”< pAdapter = pAdapter->Next;} // 释放资源 if(pAdapterInfo){ free(pAdapterInfo);} cout< } 实验报告一、二、三、四、五、六、七、实验名称:分析PL0词法分析程序 试验目的 学习PL0程序的词法分析程序GenSym的实现过程 结合具体的程序了解词法分析过程 实验设备 PC兼容机 DOS操作系统或Windows操作系统 TurboPascal软件等 实验要求 独立完程序的分析过程 自己跟踪程序的执行过程 记录程序的执行过程 记录程序的运行结果 实验内容 实验过程记录 源程序 实验动物学实验报告 一、实验动物:小鼠 二、操作流程:抓取,固定,编号,给药,取血,麻醉,绝育,解剖。 三、具体操作 1、抓取:抓取小鼠时,右手抓住小鼠尾巴,不要过于用力,以免惊吓小鼠。左手从小鼠身体后部向前抓(以免小鼠向后缩咬伤自己),抓住小鼠颈部。固定住小鼠后,将小鼠皮肤往上抓,尽量将小鼠背部皮肤抓住。左手将小鼠腹部朝向自己,把小鼠尾巴用左手无名指和小指夹住,这时小鼠腹部皮肤紧绷,不能动弹。 2、固定: 通常使用固定器进行固定。将固定器拧开后,抓住小鼠尾巴,使其钻入固定器中,再将拧下的固定器部分装好,使小鼠尾部露出,再将可旋转的铁片固定住即可进行后续实验。 3、编号:编号方式有两种:①剪脚趾编号:把小鼠腹面朝上,在下的脚趾从左至右依次编为1~10号,剪10号脚趾加1~9号脚趾依次编为11~19号,在上的脚趾依次编为20,30,40,50,60,70,80,90号,其余编号与11~19号类似。②打耳钉编号:耳钉上均有唯一编号,通过使用耳钉钳将耳钉打在小鼠耳朵上即可。实验时通常使用的是第一种方式进行编号,第二种编号通常用于需要长距离运输的动物。 4、给药:常用的给药方式有: ①口服给药:即灌胃。将注射器装入药物溶液,装上灌胃针(灌胃针有直头和弯头两种,区别不大)。如上所述,抓取小鼠后,使其头部朝上,尽量呈一直线,取灌胃针,从小鼠嘴角一侧缓缓插入(保持刻度在自己能看到的位置),顺着小鼠口腔食道的弧度让小鼠将针咽入,灌胃过程中如果遇到阻碍一定要及时拔出灌胃针,不可强行灌胃以免伤及小鼠食道以及肺部。灌胃针顺利进入后基本与小鼠身体呈一条直线,注入适量体积后再顺着食道缓缓取出灌胃针。 ②静脉注射:小鼠尾部有3条静脉和1条动脉,3条静脉非别位于背部,及两侧。静脉注射时一般选取两侧静脉,因为其相对于背部静脉更为清晰饱满。将小鼠固定后,用酒精擦拭其尾部静脉,使其充血,以便注射。之后使注射器针孔处朝上,针与尾部呈约30°扎入尾部后向上轻挑,再向内扎入部分,此过程应该比较顺畅,没有阻碍,若阻碍较大则有可能扎入到了皮肤中。扎入后将活塞向后回抽一点可见到有血回流,则说明成功扎入静脉当中,注射适当体积后迅速拔针,用酒精进行消毒。 5、取血:有断尾取血法和眼眶取血法两种。本次实验使用的是眼眶取血法。抓取小鼠,固定其头部用手指将其上下眼睑分开,露出其眼球并且不能闭上。用玻璃毛细管从其上眼角处扎入眼球后方毛细血管从,使血液顺着毛细管留下,取血完成后快速将毛细管取下。 6、麻醉:抓取老鼠,使其头部朝下,使其腹部脏器向胸腔靠拢,露出腹部空腔,以免刺伤脏器。将注射器竖直扎入靠近后腿部腹腔,刺入之后稍微向前倾斜但不要向前刺入,一般注入0.5mL麻醉剂即可。随后拔出针,方向小鼠,等待几分钟后即可麻醉。 7、绝育:绝育手术是通过剪除雌鼠卵巢或雄鼠输精管来实现的。将麻醉的雌鼠背面朝上,从其胸腔和尾部之间向下三分之一处剪开一个小口,用镊子将其卵巢取出,上面呈现红色斑点的部分即为卵巢,用剪刀将这一部分剪除,然后用缝合针线将其缝合,缝合方法为将针穿过后,将线缠绕镊子两圈再逆时针缠绕两圈,再重复缠绕一遍,将镊子夹住线头把缠绕的线移至线头系紧即可(缝合过程全程用镊子和剪刀操作),里面肌肉层以及外面皮层均需缝合。雄鼠则从外生殖器向上1-2cm处剪开小口,用镊子在其中找出输精管(较细长的乳白色小管),尽量多减掉一些,以免其长长愈合,以上述方法缝合伤口即可。 9、解剖:以颈椎脱臼法处死小鼠,使其腹面朝上。用镊子将其腹部皮肤夹起,然后用剪刀剪开,观察各个器官所在位置和形态,解剖完的小鼠放入尸体袋中。第四篇:实验报告格式--实验2
第五篇:实验动物学实验报告