- 博客(29)
- 收藏
- 关注
原创 【网安第二章】SQL注入拓展——各种注入方法详细介绍
目录找闭合符1. 描述2. 场景2.1场景一1. 搞清楚闭合符包含哪些符号2. 确定闭合符究竟是什么3.相关关卡2.2 场景二——未知正确输入的情况下1. 具体2.相关关卡确认是否存在注入点1. 描述2. 场景2.1 场景一——GET1. 具体2. 相关关卡2.2 场景二——POST1. 具体2. 相关关卡2.3 场景三——POST sqlmap1. 具体2. 相关关卡2.4 场景四——页面信息提示点1. 具体2. 相关关卡2.5 场景五——头部注入(UserAgent)1. 具体2. 相关关卡2.6 场景
2024-08-28 02:13:30
374
原创 【网安第一章】信息收集
常见敏感文件:配置文件xxx.cfg数据文件xxx.sql.tar.gz目录/backup/conf/admin为什么会泄露网站配置错误本地文件包含(LFI)php里面存在include。如果include通过参数传入,并且没有经过校验,那么就能访问到磁盘中所有的文件。
2024-08-11 23:16:35
278
原创 【网安第二章】SQL注入
mysql库中存在4个控制权限的表+ User表:存放用户账户信息以及全局级别(所有数据库)权限,决定了来自哪些主机的哪些用户可以访问数据库实例,如果有全局权限则意味着对所有数据库都有此权限+ Db表:存放数据库级别的权限,决定了来自哪些主机的哪些用户可以访问此数据库+ Tables_priv表:存放表级别的权限,决定了来自哪些主机的哪些用户可以访问数据库的这个表+ Columns_priv表:存放列级别的权限,决定了来自哪些主机的哪些用户可以访问数据库表的这个字段。
2024-08-11 23:14:30
382
原创 【网安第一章】——信息收集
常见敏感文件:配置文件xxx.cfg数据文件xxx.sql.tar.gz目录/backup/conf/admin为什么会泄露网站配置错误本地文件包含(LFI)php里面存在include。如果include通过参数传入,并且没有经过校验,那么就能访问到磁盘中所有的文件。
2024-08-11 23:11:13
1162
原创 算法题:求所需的最小的书包数量(拓展拓展再拓展~)
现在有一种书包,这种书包只有两个书槽(即最多只能放下两本书。),并且一个这种书包只能装下N千克的书。现在有一个数组,数组元素是每本书的重量(千克)。问:完全装下这堆书,需要多少个书包?
2023-12-02 00:05:26
150
原创 求无序集合的并集、交集、子集(大厂面试题)
前两天面某大厂,有这么一条考数据结构的题,属实把我难倒了,要考虑的点实在太多了。题目基本如下:有n个集合,每个集合里面存放无规律数字,每个集合可以认为是从一个文件里面读出来的数字,自己考虑用什么数据结构来存。(一个集合里面是不允许有重复元素的) 求两个集合的并集、交集、子集。(子集即两个集合的交集的一部分,例如sub(a&b,0)就是求a、b两个集合的交集的子集,子集大小为10) 求多个集合的并集、交集、子集。 求多个集合进行并集、交集混合运算后的子集。(例如,sub((a|b|c|.
2021-11-06 18:51:33
1553
3
原创 KMP(java实现)
public static int KMP(String s1,String s2){ if(s1.length()<s2.length()||null==s2||s2.length()==0) return -1; //求模式串的next数组 int[] next=new int[s2.length()]; next[0] = 0; int j = 0;int i = 1; while(i<...
2021-08-23 16:23:05
158
原创 springboot的springmvc请求映射原理
①当容器建立完成后,spring扫描@Controller的方法,把每一个方法作为一个handler(Bean)注入到容器里面,并且根据@RequestMapping里面的那段url为该Bean添加一个alias别名。②当HandlerMapping开始自动配置时,它就会去容器里面找handler,并且根据handler的alias,来建立一个url->handler的映射。③当请求过来的时候,DispatcherServlet就会到HandlerMapping里面找那个映射,就找到了可以处理
2021-07-23 12:02:03
292
1
原创 CAP定理之我见
前导知识:1、一致性(Consistency):在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本)2、可用性(Availability)在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。(对数据更新具备高可用性)3、分区容错性(Partition tolerance)大多数分布式系统都分布在多个子网络。每个子网络就叫做一个区(partition)。分区容错的意思是,区间通信可能...
2021-07-13 22:14:51
117
原创 HTTP请求头和响应头字段
首先请求报文包括请求行、请求头、请求体请求行:请求方法 路径 HTTP版本不要混淆请求头Content-Type : 请求的与响应体对应的MIME信息,就是我从服务器里面想获取什么类型的信息。 如果想获取json :Content-Type:application/json 如果想获取html : Content-Type : text/html 如果想获取jpg : Content-Type:image/jpgCookie : Cookie
2021-03-11 09:33:55
277
原创 哈工大操作系统实验四——基于内核栈切换的进程切换(极其详细)
目录总览第一部分、switch_to相关一、改写switch_to二、配合switch_to修改的补充2.1 开放switch_to2.2改写task_struct2.3 ESP0和KERNEL_STACK 以及一些参数的设置2.4 全局变量tss的声明2.5 在sche.c声明switch_to三、在schedule()调用switch_to四、PCB结构如下第二部分、fork()相关一、为什么要修改fork()二、内核栈视角下的五段论2.1中断进入阶段(第一阶段)2.2 调用schedule引起PCB切
2020-12-12 23:59:22
2904
5
原创 哈工大操作系统实验(二)操作系统调用——极其通俗易懂
目录前言零、总览框图一、编写应用程序二、追溯include/unistd.h的_syscall1(type,name,atype,a)三、研究0x80中断四、追溯system_call五、追溯sys_call_table数组六、编写who.c七、修改Makefile八、开机前言本文采用自顶向下的方式完成实验,也即从自己编写的用户应用程序开始一步一步完成最终的功能,这样可以更好地把握主线。零、总览框图一、编写应用程序该应用程序iam.c和whoami.c将会调用iam()和whoami()这两个系
2020-12-07 01:00:15
2086
2
原创 汇编语言(王爽)实验十(3)
答案在最后面assume cs:codedata segment db 10 dup(0)data endscode segment start:mov ax,1266 mov bx,data mov ds,bx mov si,0 call dtoc mov dh,8 mov dl,3 mov cl,2 c
2020-11-09 21:34:45
259
1
原创 ServerSocket源码调试分析——java学习总结(12)
从书上找下来的一个demo,准备根据这个demo来断点调试学习Socket和ServerSocket源码。1 样例首先看一下HTTPServer里面的service()如下2 ServerSocket的构造方法先看看ServerSocket的构造方法继续跳转到另一个构造方法在执行这个方法体之前,调试界面又跳到成员变量那里去,觉得很奇怪。》》》主调试外》》》哎呀,之前的JVM白学了,复习了一下对象实例化才发现,原来在构造方法执行前,需要先初始化成员变量。这里粘一下之前的笔记,看不懂
2020-09-28 22:26:12
443
原创 HashMap源码分析putTreeVal(红黑树部分)——java学习总结(11)
这里写目录标题①:TreeNode②:putTreeVal()③:comparableClassFor()④:compareComparables()⑤:find()⑥:tieBreakOrder()⑦:balanceInsertion()⑧:treeify()⑨:untreeify①:TreeNodeTreeNode虽然是红黑树结点,但它也有链表结构(继承了LinkeHashMap.Entry,后者继承了HashMap.Node)②:putTreeVal()此博文只介绍putTreeVal(),
2020-06-21 04:20:14
579
1
原创 HashMap源码解读(链表部分和resize)——java学习总结(10)
jdk8以后的resize()做了一个更新,在扩容后不是所有键值对再次重新哈希,重新计算所有键值对位置,而是根据一个设定(也就是每次resize()只扩容一倍,也即capaticy必须是2的倍数),每次扩容后根据hash值的不同,一部分留在原来位置j,另一部分放在扩容后的部分(位置j+oldCap)其中oldCap表示未扩容的容量此处不懂没关系,具体实现请参考下面的源码加深理解...
2020-06-19 00:31:22
242
原创 Integer的缓存问题——java学习总结(9)
一、先考虑一下这个demo的输出是什么public class Main { public static void main(String[] args) { Integer i1 = 100; Integer i2 = 100; Integer i3 = 200; Integer i4 = 200; System.out.println(i1==i2); System.out.println(i3==i4); }}运行结果:tr
2020-06-17 21:15:31
427
原创 DualPivotQuicksort源码解读(附图解)——java学习总结(8)
阅读指南源码在文章最后一部分,加上了本人的理解注释,建议打开两个页面同时对照源码注释和博文(图解)一起阅读零:在看ArrayList的源码时,对它的sort()方法进行了深入研究,最后找到它的最终实现类——DualPivotQuicksort,这类是私有的,防止实例化的,所以在api上找不到它。一、DualPivotQuicksortDualPivotQuickSort汇集了多种排序算法,仅仅称之为DualPivotQuickSort(双轴快速排序)并不合适。这个类包含以下几种排序算法:单轴
2020-06-14 14:10:57
3179
1
原创 (图解)Object的wait(),notify(),notifyAll()——java学习总结(6)
一、wait()1、无参情况下:当前线程A释放对象锁,然后进入无限等待状态,直到被其他线程X 里object的notify()或者notifyAll()唤醒。有参情况:wait(long timeoutMillis),参数为等待的最长时间。当前线程A 释放对象锁,进入等待状态,当计时结束或其他线程X 里object的notify()或者notifyAll()唤醒。2、由于执行wait()时必须释放对象锁,所以wait()必须处于synchronized(obj)下。二、notify()表示持有
2020-06-09 16:19:28
175
原创 flatMap()的深入理解——java学习总结(5)
1、初解flapMap()是流的中间操作,是用于扁平化Stream的操作。JDK API 给出的解析是这样的Returns a stream consisting of the results of replacing each element of this stream with the contents of a mapped stream produced by applying the provided mapping function to each element.翻译过来意思
2020-05-23 18:32:50
1103
原创 Lambda表达式(Java8新特性)——java学习总结(4)
该文从行为参数化和匿名类介绍Lambda表达式为什么产生,再通过图解等方式详细解析Lambda表达式...
2020-05-23 12:15:09
351
原创 Mybatis的@Param注解———java学习总结(3)
@Param注解里的value值是用于标识@Insert或@Select注解里的SQL语句的预定义变量。1、第一种形式:只有一个预定义变量,接口方法参数只有一个@Select("select * from role where id = #{roleId} ")Role findById(@Param("roleId") String roleId);以上的@Param可加可不加,即以下也可达到同样效果。@Select("select * from role where id = #{roleId
2020-05-10 13:28:52
383
原创 String的深入理解——java学习总结(2)
1.String是不可变的字符串,它的底层是一个用final修饰的字符数组;[1]2.String 的两种创建方式(1)创建方式一:String a = "hello";String a = "hello";String b = "hello";System.out.println(a==b);输出为true,原因如下:String维护了一个字符串的常量池[2],当用String...
2020-04-13 12:23:09
347
原创 MethodHandles的机理——java学习总结(1)
MethodHandles在java的作用就相当于函数指针在C++中的作用,允许java动态引用变量、方法,并调用它们。1.与C++函数指针的相似参照一下C++代码void sort(int list[],const int size,int (*compare)(int,int));C++中可以传递一个函数指针(入口)作为参数 而Java中却不行,只能实现一个带有compare()方...
2020-04-01 18:02:03
863
原创 《操作系统实用教程--螺旋方法》习题答案
第一章:入门1.1操作系统是为普通用户和编程人员提供服务,从而使计算机的使用无须处理那些低级的、难以掌控的硬件命令的软件。1.2略1.3(1)操作系统可以把安装在游戏系统上的各种不同游戏所需要的公共模块整合到一起并统一管理(2)操作系统可以处理异常事件。(3)一些重要的操作系统概念已经融入该游戏系统中,例如当游戏被启动时,其部分软件模块被加载进内存,而其他部分可能被预装进ROM。1.4...
2019-12-06 12:57:45
765
2
原创 最通俗易懂的Git教程!!!
一、git的特性1、git是一个版本控制系统,通俗的来说就是此前任一时刻的文件更改都能被查找到,就比如浏览器上面的历史纪录。2、比如,当我写好正确的代码后,发现有些地方可以更改得更具可读性,或者提高运行速度,这个时候我便开始修改,改完这些地方了,但是一运行,发现出bug,这个时候我想找回原来正确的代码的时候,不会用git的人就会用crtl+z返回上一步,但这并不总是奏效,应为有时修改太多,cr...
2019-11-02 22:39:36
281
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人