- 博客(28)
- 收藏
- 关注
原创 javaIO流(一)
IO流IO流IO流:存储和读取数据的解决方案,用于读写文件中的数据(可以读写文件,或网络中的数据…)可以把程序中的数据保存到本地文件当中(写出数据output)还可以把本地文件中的数据加载到程序当中(读取数据input)IO流的分类纯文本文件:Windows自带的记事本打开能读懂操作本地文件的字节输出流,可以把程序中的数据写到本地文件中书写步骤。
2025-05-09 01:20:20
891
原创 java文件
FileFileFile对象就表示一个路径,可以是文件的路径、也可以是文件夹的路径这个路径可以是存在的,也允许是不存在的绝对路径是带盘符的。相对路径是不带盘符的,默认到当前项目下去找。路径是唯一的。
2025-04-28 14:43:49
354
原创 java异常
异常异常异常:异常就是代表程序出现的问题Error:代表的系统级别错误(属于严重问题)系统一旦出现问题,sun公司会把这些错误封装成Eror对象:Error是给sun公司自己用的,不是给我们程序员用的。因此我们开发人员不用管它Exception:叫做异常,代表程序可能出现的问题我们通常会用Exception以及他的子类来封装程序出现的问题运行时异常:RuntimeException及其子类,编译阶段不会出现异常提醒,运行时出现的异常(如:数组索引越界异常)编译时异常。
2025-04-27 13:09:19
510
原创 java方法引用
引用:把已经有的方法拿过来用,当做函数式接口中抽象方法的方法体。引用本类的成员方法(引用处不能是静态方法)引用父类的成员方法(引用处不能是静态方法)范例:Integer::parseInt。引用其他类的成员方法。使用类名引用成员方法。范例:Student::new。方法:就是以前学习的方法。数据类型[]::new。其他类对象::方法名。super::方法名。
2025-04-24 12:49:11
242
原创 Stream流
注意1:中间方法,返回新的Stream流,原来的Stream流只能使用一次,建议使用链式编程。双列集合需要通过keySet()和entrySet()先转成单列集合。(统计 打印 终结方法(最后一步,调用完毕之后,不能调用其他方法))注意2:修改Stream流中的数据,不会影响原来集合或者数组中的数据。(过滤 转换 中间方法(方法调用完毕之后,还可以调用其他方法))作用:结合了Lambda表达式,简化集合、数组的操作。先得到一条Stream流(流水线),并把数据放上去。Stream流的终结方法。
2025-04-17 14:58:11
197
原创 java集合进阶二
双列集合双列集合MapAPIMap是双列集合的顶层接口,它的功能是全部双列集合都可以继承使用的put在加数据的时候,如果键不存在,那么直接把键值对对象添加到map集合当中,方法返回null在添加数据的时候,如果键是存在的,那么会把原有的键值对对象覆盖,会把被覆盖的值进行返回remove返回删除的值。
2025-04-14 16:29:42
564
原创 java集合进阶
类后面–泛型类使用场景:当一个类中,某个变量的数据类型不确定时,就可以定义带有泛型的类格式:修饰符 class 类名<类型>{}此处E可以理解为变量,但是不是用来记录数据的,而是记录数据的类型,可以写成:T、E、K、V等方法上面–泛型方法方法中形参类型不确定时方案①:使用类名后面定义的泛型,所有方法都能用方案②:在方法申明上定义自己的泛型,只有本方法能用格式:修饰符<类型> 返回值类型 方法名 (类型 变量名) {}接口后面–泛型接口。
2025-02-28 16:12:50
845
原创 常见API
游戏打包exe游戏打包exe① 一定要包含图形化界面②代码要打包起来3.游戏用到的图片也要打包起来4.JDK也要打包1.把所有代码打包成一个压缩包,jar后缀的压缩、2.把jar包转换成exe安装包3.把第二步的exe,图片,JDK整合在一起,变成最终的exe安装包Math是一个帮助我们用于进行数学计算的工具类私有化构造方法,所有的方法都是静态的。
2025-02-14 14:55:08
933
原创 java基础
数据类型[] 数组名例:int [] array数据类型 数组名 []例:int array []this:理解为一个变量,表示当前方法调用者的地址值,super:代表父类存储空间。多态同类型的对象,表现出的不同形态。多态表现形式:父类类型 对象名称=子类对象;有继承关系有父类引用指向子类对象有方法重写抽象方法的定义格式:publicabstract返回值类型 方法名(参数列表);抽象类的定义格式:publicabstractclass 类名{}
2025-01-21 01:10:06
671
原创 log4j2远程代码执行
漏洞,黑客可以恶意构造特殊数据请求包,触发此漏洞,从而成功利用此漏洞可以在目标服务器上执行任意代码。注意,此漏洞是可以执行任意代码,这就很恐怖,相当于黑客已经攻入计算机,可以为所欲为了,就像已经进入你家,想干什么,就干什么,比如运行什么程序,植入什么病毒。通过访问那个域名网站之后,它的这个服务器后面会去做一个映射,如果这个网站存在这个漏洞,那么它就会访问这个网站, 只要一访问这个网站它就会得到网站的ip地址,说明我的服务器解析了这个代码,说明那个我的这个网站存在这个漏洞。
2024-05-26 12:45:23
1213
原创 SSRF服务器端请求伪造
1.社交分享功能:获取超链接的标题等内容进行显示2.转码服务:通过URL地址把原地址的网页内容调优使其适合手机3.屏幕浏览在线翻译:给网址翻译对应网页的内容4.图片加载/下载:例如富文本编辑器中的点击下载图片到本地;5.通过URL地址加载或下载图片云服务厂商:它会远程执行一些命令来判断网站是否存活等,所以如果可以捕获相应的信息,就可以进行ssrf测试6.编码处理7.可以利用google 语法加上这些关键字去寻找SSRF漏洞。从远程服务器请求资源----》找SSRF。
2024-05-12 14:17:20
1385
1
原创 Struts2远程代码执行
Struts2漏洞是一个经典的漏洞系列,根源在于Struts2引入了OGNL表达式使得框架具有灵活的动态性。随着整体框架的补丁完善,现在想挖掘新的Struts2漏洞会比以前困难很多,从实际了解的情况来看,大部分用户早就修复了历史的高危漏洞。目前在做渗透测试时,Struts2漏洞主要也是碰碰运气,或者是打到内网之后用来攻击没打补丁的系统会比较有效。Struts2执行代码的原理:Struts2的动态性在于ongl表达式可以获取到运行变量的值,并且有机会执行函数调用。
2024-04-29 01:54:48
1149
1
原创 docker基础
传统安装Mysql–查看、卸载比如我们需要安装一个Mysql的时候,普通的一个安装是很麻烦的,不仅是需要安装Mysql工具、库,它的配置也挺麻烦。不同的系统版本,他要下载Mysql的类型也是不一样的,也要去查一下当前系统虚拟机或者主机适合下载哪个,查到之后,要去下载这些过程太麻烦了,而且容易出错使用docker工具去安装只需要一条命令● 安装命令:● docker.io是Docker软件包的名称,通过执行该命令,系统会自动下载并安装Docker软件包及其相关依赖项。
2024-04-28 12:59:05
876
1
原创 热门框架漏洞(Thinkphp)
(__construct是一个魔术方法里面的一个析构函数,只要我在对象里面new了一个对象之后,会自动调用__construct里面的代码,我们不需要进行调用,我们只要创建一个对象会自动调用,这个参数会对我们网站里面的代码进行覆盖他就会那个本来要执行的代码进行覆盖。这里达到的效果是phpinfo(1),我们正常写的情况下里面没有值这里给了一个1的值,是因为我们这里查找的php文件不完整数字不同,获取的文件里面的信息也是不同。的情况下,用户可以调用任意类的任意方法,最终导致远程代码执行漏洞的产生。
2024-04-25 00:58:42
2097
1
原创 Thinkphp扩展
在ThinkPHP中,视图通常是由HTML、CSS和JavaScript等前端技术组成的模板文件,用于呈现最终的页面给用户。● Tcsh(TENEX C Shell):Tcsh是C Shell的改进版本,提供了类似C语言的语法和一些额外的特性。● Zsh(Z Shell):Zsh是一个功能强大的命令解释器,它具有高级的自动补全功能、主题定制和插件支持等特性。● 简单来说,OGNL可以帮助我们通过表达式来获取对象的属性值、调用对象的方法以及进行一些简单的运算操作。
2024-04-24 10:55:55
811
原创 代码执行1
Java:Java中没有类似php中eval 函数这种直接可以将字符串转化为代码执行的函数,但是有反射机制,并且有各种基于反射机制的表达式引擎,如:OGNL、SpEL、MVEL等,这些都能造成代码执行漏洞。(如PHP中的eval)时,没有考虑用户是否控制这个字符串,将造成代码执行漏洞。代码执行漏洞是指应用程序本身过滤不严,用户可以通过请求将代码注入到应用中执行。eval(将字符串当做函数进行执行(需要传入一个完整的语句))${}执行代码(中间的php代码将会被解析)2.禁用或减少使用执行代码的函数。
2024-04-21 22:04:38
494
1
原创 命令执行1
RCE:远程命令执行或者代码执行,因为RCE这个词的滥用,RCE的范围比较广,只要渗透的最终情况可以实现都属于RCE,列如:代码执行、文件包含、反序列化、命令执行、甚至是写文件Getshell都可以属于RCE。RCE漏洞,可以让攻击者直接向后台服务器远程注入操作系统命令或者代码从而控制后台系统。
2024-04-20 07:16:54
1221
2
原创 XSS平台搭建及后台使用(cookie获取)
点击XSS后台,这就是我们收集cookie的网站,第一次进入需要初始化,如果你的数据库密码改了的就要去靶场的根目录的pkxss/inc/config.inc.php把链接数据库密码改成一致(案列靶场是这个,反正就是要找到这个配置文件)执行完之做了一个php的重定向,做完上面操作,保存完数据库之后,重新给你访问了一下这个网址,这个网址应该改成存在漏洞的网站的IP。然后我们把留言删除,刚刚我们知识测试是否存在有这个漏洞,然后我们现在想要获取cookie,需要构造代码了。这里的IP是能和虚拟机通信的,
2024-04-12 05:08:13
2661
原创 CSRF跨站请求伪造
(意思就是,用户C登陆了A网站的页面,没有退出,也没有删除,然后用户C来访问了我的网站,我的网站那里面可能有一个点击的内容,假设用户C点击了这个链接,它就会发送一个请求。CSRF漏洞风险存在了,如果需要真正的被利用,还需要对"修改或新增"数据操作请求的伪装,此时恶意攻击者只要将伪装好的"数据修改或新增"的请求发送给被攻击者,或者通过社工的方式诱使被攻击在其Cookie还生效的情况下点击了此请求连接,即可触发CSRF漏洞,成功修改或新增当前用户的数据信息。攻击者盗用了你的身份,以你的名义发送恶意请求。
2024-04-07 23:55:18
862
原创 XSS漏洞利用
输出编码主要有URL、HTML、JS可以采用白名单验证或者黑名单验证方法。白名单验证:对用户提交的数据进行格查,只接受指定长度范围内、采用适当格式和预期字符的输入,其余一律过滤黑名单验证:对包含XSS代码特征的内容进行过滤,如"“、“script”、”#"等·对所有输出字符进行HTML编码‘’ 转成& gt;‘&’ 转成& amp;" 转成& quot;’ 转成& #39;
2024-04-01 21:04:27
2860
原创 业务逻辑支付漏洞
比如:在支付的时候它URL后面的支付接口是3,而试用接口是4,那么此时你已经试用过了,复制下确认试用时的URL,修改后面的支付接口为3,那么此时就会调用购买支付接口,但是由于你本身这个产品就是试用的,其相应值绑定了这个试用商品,那么金额就肯定是0,那么最后点击支付,你就可以看到支付成功,试用成功又重复试用了一次,然后他们的试用时间会累加在一起,这就导致了可无限制购买任何产品了。: 支付流程通常涉提供的输入,如金额、银行卡号、付款地址等例如,攻击者可能提交负数金额,或者使用非法的银行卡信息。
2024-03-31 13:51:03
1335
1
原创 逻辑漏洞之业务安全
越权漏洞的危害与影响主要是与对应业务的重要性相关,比如说某一页面服务器端响应(不局限于页面返回的信息,有时信息在响应包中,页面不一定能看见)中返回登录名、登录密码、手机号、身份证等敏感信息,如果存在平行越权,通过对用户ID的遍历,就可以查看所有用户的敏感信息,这也是一种变相的脱库,而且很难被防火墙发现,因为这和正常的访问请求没有什么区别,也不会包含特殊字符,具有十足的隐秘性。如果存在乱序,生成的订单,我能不能想办法跳过支付,或者我在这个订单的地方,我把我的订单号改成别人的,用别人的账号给我支付。
2024-03-30 20:12:20
1336
1
原创 业务逻辑之身份认证安全
多见于计算类型的验证码,如 1+2=?,这种类型的验证码严格意义上来说不能叫做验证码,多刷新几次验证码,我们可能会发现系统中的算数题目只有那么几道,这种情况下只要将验证码全部下载下来,生成一个 md5 库,然后将前端生成的验证码与本地文件进行对比即可。渗透测试的过程中,有时候会出现这种情况,系统存在一个万能验证码,如0000、9999只要输入万能验证码,就可以无视验证码进行暴力破解。客户端在本地进行验证码是否正确的判断,而该判断结果也可以在本地修改,最终导致欺骗客户端,误以为我们已经输入了正确的验证码。
2024-03-26 20:03:17
1088
1
原创 Access 注入
靶场为access数据库这里有个zip已经配好了环境提取码:9930这个vmx直接用虚拟机打开,然后确保主机和虚拟机能ping通Access是没有端口的,,只有表->->->->。exists是否存在从哪个库里面查打开之后我们试着点击可以点击的地方然后发现有注入的地方,然后试着判断是数字型还是字符型发现单引号和双引号都报错,然后我id=1/0报错,除零错误,说明计算了,是数字型然后我们就可以判断数据库类型了他竟然说我们没有读取的权限,我们试试另外一个。
2024-03-24 04:43:25
2190
1
原创 sql的bypass
Locate(str1,str2,pos)返回str1字符串在str2里pos(起始位置)出现的位置,没有返回0pos必须大于第一次出现的位置,才能显示第二次出现的位置。后面的参数3不是说,后面找的时候第一参数变成1,只是说在这个字符串中,他会从第三位往后找,返回的还是原来字符串的位置,而且返回是子字符串第一个字符的位置。Locate(str1,str2)返回str1字符串在str2里第一次出现的位置,没有返回0。参数1的长度无法满足参数二的长度时,参数3才会执行,满足就输出参数1对应参数2的长度。
2024-03-23 15:14:28
1289
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅