自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(246)
  • 资源 (5)
  • 收藏
  • 关注

原创 [BUUCTF-pwn]——jarvisoj_level3_x64

简单的ret2libc通过vuln函数,我们可以看出程序中包含write和read函数,同时存在栈溢出。通过write泄露read的got表地址。进而获得libc,重新控制代码再次进行栈溢出即可获得shell。

2023-10-25 10:22:30 205

原创 Mysql安装配置教程(超详细)(C盘、D盘均可安装)

Mysql超详细安装配置,让小白不再小白,成为可以教别人的小白。C盘和D盘均可安装哦!!!

2023-08-16 20:28:21 4635 3

原创 2208. 将数组和减半的最少操作次数

2208. 将数组和减半的最少操作次数 一道优先队列题目

2023-07-25 09:11:37 175

原创 42. 接雨水

42.接雨水 一个简单的动态规划问题

2023-07-23 20:33:51 192

原创 860. 柠檬水找零

860. 柠檬水找零一个简单的贪心题目

2023-07-22 12:34:58 68

原创 考研完毕!!开始康复训练!!!(内含大致计划)

好久好久不认认真真敲代码了,呜呜呜。从今天开始进行康复训练,导师没派任务,决定浅学一下算法与数据结构,芜湖!不管岗位是开发、运维、安全、亦或者就是算法,打铁还需自身硬,提高点代码能力准没错!具体每天的练习在后续文章,想跟着学可以一起看,噜啦噜啦嘞,噜啦噜啦嘞!

2023-07-17 10:19:11 79 1

原创 IDEA加载“com.mysql.jdbc.Driver“报错(java.lang.ClassNotFoundException)

IDEA加载"com.mysql.jdbc.Driver"报错最近使用java连接数据库,由于是第一次连接。所以照猫画虎进行连接结果出现报错。原因是java.lang.ClassNotFoundException网上百度一下是因为没有加载mysql依赖造成的。不过他们的解决方法,我感觉对于小白有些不是很友好。因此我在IDEA中尝试去寻找该依赖。解决方法直接进入正题解决方法如下:找到你的项目右击:找到open module setting或者你也可以按F4点击依赖,再点击+号一般我

2022-05-16 15:56:01 3636 4

原创 [BUUCTF-pwn]——ciscn_2019_n_3

[BUUCTF-pwn]——ciscn_2019_n_3结构体://该结构体仅仅是选择字符串的时候的结构体struct chunk{ void *rec_str_print(); void *rec_str_free(); char *str;}//该结构体仅仅是选择数字的时候的结构体struct chunk{ void *rec_int_print(); void *rec_int_free(); int number;}这道题目就是简单的u

2021-11-20 14:32:13 3056 1

原创 [BUUCTF-pwn]——[ZJCTF 2019]EasyHeap

[BUUCTF-pwn]——[ZJCTF 2019]EasyHeap思路我们第一个想法肯定是执行l33t这个函数,事实证明被摆了一道。没有结果,但是我们有system函数我们可以将其放入我们可以操控的函数,比如printf、puts、gets、free等函数的got表,通过传入/bin/sh来解决。利用uaf就可以达到其目的。exploitfrom pwn import *context(os='linux',arch='amd64',log_level='debug')p = remot

2021-11-16 20:13:31 873

原创 [BUUCTF-pwn]——pwnable_echo2

[BUUCTF-pwn]——pwnable_echo2附件题解没那么多时间写详细的题解,就简单理一下思路了。首先这个题目中通过 2. : FSB echo 我们可以泄露出来栈上的地址,这里我们泄露出来的是当前栈帧rbp中存储的地址,也就是mian函数的rbp地址。通过rbp与变量的关系,我们可以得到我们在程序开始运行时写入name的地址。由于栈是可执行的,我们只需要将shellcode写入我们要写入的name的位置即可。不过长度要小于24。做到这一步第一步就完成了,下面我们需要利用uaf漏洞来劫持

2021-11-16 19:59:36 882

原创 python:SyntaxError: invalid syntax报错

python:SyntaxError: invalid syntax报错大多数时间都是因为括号不成对造成的。快去检测一下是否少括号吧。

2021-10-24 10:45:34 2333

原创 Pwn环境配置(三)——ubuntu环境搭建(新)

Pwn环境配置(三)——ubuntu环境搭建(新)前言当初不知道怎么搭建好的ubuntu16.04的环境这次搭建有点问题,搭建了大半天pwntools还是不行。准备出一个新搭建教程。本教程是针对ubuntu20.04的版本,下载链接ubuntu20.04官方链接放心使用。不过不知道后面官方链接这个是否会更新。更新了就自己找找吧。开始搭建0x1 安装gccsudo apt install gcc0x2 安装pip这里安装的是python3的pip,毕竟python2早就已经停产了。sudo

2021-10-12 08:39:39 2166

原创 557. 反转字符串中的单词 III

557. 反转字符串中的单词 III给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。示例:输入:“Let’s take LeetCode contest”输出:“s’teL ekat edoCteeL tsetnoc”解题思路由于String类型是不可修改的,所以可以用StringBuffer或者char[]来进行由于char[]效率更高,所以利用toCharArray,转换到char[]类型。然后就开始遍历碰到’ '就暂停然后,这个区间进行排序即

2021-09-18 14:33:28 515

原创 344. 反转字符串

344. 反转字符串编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。示例 1:输入:[“h”,“e”,“l”,“l”,“o”]输出:[“o”,“l”,“l”,“e”,“h”]示例 2:输入:[“H”,“a”,“n”,“n”,“a”,“h”]输出:[“h”,“a”,“n”,“n”,“a”

2021-09-18 13:40:30 534

原创 21. 合并两个有序链表

21. 合并两个有序链表描述:将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例 1:输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]解题思路利用归并排序的思想就OK了归并排序可以迭代也可以递归,不过时间复杂度是相同的,不同的是迭代空间用的稍微少一点应该。代码class Solution { public ListNode mergeTwoLists(ListNode l1,

2021-09-18 13:17:38 514

原创 20. 有效的括号

20. 有效的括号还没使用过java自带的栈结构,正好通过这个题目熟悉一下题目:给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例 1:输入:s = “()”输出:true示例 2:输入:s = “()[]{}”输出:true解题思路括号配对,可以利用栈结构,因为栈是先进后出,也就是后进先出的。每次对栈弹出的元素以及栈是否为空进行

2021-09-18 00:26:34 514

原创 13. 罗马数字转整数

13. 罗马数字转整数题目:罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 X

2021-09-17 23:14:20 519

原创 88. 合并两个有序数组

88. 合并两个有序数组题目:给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。示例 1:

2021-09-17 11:22:28 505

原创 167. 两数之和 II - 输入有序数组

167. 两数之和 II - 输入有序数组题目:给定一个已按照 非递减顺序排列 的整数数组 numbers ,请你从数组中找出两个数满足相加之和等于目标数 target 。函数应该以长度为 2 的整数数组的形式返回这两个数的下标值。numbers 的下标 从 1 开始计数 ,所以答案数组应当满足 1 <= answer[0] < answer[1] <= numbers.length 。你可以假设每个输入 只对应唯一的答案 ,而且你 不可以 重复使用相同的元素。示例 1

2021-09-17 11:06:33 502

原创 283. 移动零

283. 移动零题目:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。解题思路很简单的一个思路,将第一个为0 的地方标记即可。最开始我们假设为0,如果为0,下标不移动,不为0下标才向后移动一位。因为我们标及的是第一个为0的数。可能会疑问如果第一个不是0呢,不是0的话,我们和遍历同步,自己和自己交换相当于不交

2021-09-17 10:50:23 514

原创 36. 有效的数独

36. 有效的数独题目:请你判断一个 9x9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图)数独部分空格内已填入了数字,空白格用 ‘.’ 表示。注意:一个有效的数独(部分已被填充)不一定是可解的。只需要根据以上规则,验证已经填入的数字是否有效即可。示例1:输入:board =[[“5”,“3

2021-09-17 10:05:18 552

原创 53. 最大子序和

最大子序和给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例 1:输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。示例 2:输入:nums = [1]输出:1解题思路说实话,一开始拿到这道题目还真不知道如何下手。但是有一种暴力的方法肯定可以,就是遍历呗谁不会呢。也就是正着思考,按个暴力遍历,看看以第i个元素开头的最大子序列是多少。可以是可以,但

2021-09-16 01:22:07 498

原创 217. 存在重复元素

存在重复元素给定一个整数数组,判断是否存在重复元素。如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。示例 1:输入: [1,2,3,1]输出: true解题思路将数组排序后,从头到尾比较相邻两个元素即可代码实现class Solution { public boolean containsDuplicate(int[] nums) { Arrays.sort(nums); int n =

2021-09-16 00:46:38 497

原创 189. 旋转数组

旋转数组给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。进阶:尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。你可以使用空间复杂度为 O(1) 的 原地 算法解决这个问题吗?示例:输入: nums = [1,2,3,4,5,6,7], k = 3输出: [5,6,7,1,2,3,4]解题思路最简单的重建一个同样大小的数组,则满足(i+k)mod(len) 处的位置的值为原数组 i 位置的值。空间复杂度为O(N)我们也可以构造部分数组,大小为k m

2021-09-16 00:36:13 503

原创 寻找峰值(局部最大、局部最小)——二分查找

寻找峰值也就是局部最大,可以采用二分法来实现。当然局部最小也一样。峰值元素是指其值严格大于左右相邻值的元素。 给你一个整数数组 nums,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回 任何一个峰值 所在位置即可。 你可以假设 nums[-1] = nums[n] = -∞ 。你必须实现时间复杂度为 O(log n) 的算法来解决此问题。解题思路类似这种局部最小和局部最大的问题。我们均可以采用二分的方法来解决,并不一样非要有序才可使用二分进行搜索。特定条件的无序也是可以的。简单

2021-09-15 20:03:35 2867

原创 有序数组的平方

有序数组的平方给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。示例 1:输入:nums = [-4,-1,0,3,10]输出:[0,1,9,16,100]解释:平方后,数组变为 [16,1,0,9,100]排序后,数组变为 [0,1,9,16,100]示例 2:输入:nums = [-7,-3,2,3,11]输出:[4,9,9,49,121]提示:1 <= nums.length <= 10^4

2021-09-15 18:37:16 527

原创 python实现货币转换

python实现货币转换参考答案n = input()if n[:3] in ['RMB']: u = eval(n[3:]) / 6.78 print("USD{:.2f}".format(u))elif n[:3] in ['USD']: r = 6.78 * eval(n[3:]) print("RMB{:.2f}".format(r))

2021-09-15 11:51:35 13106

原创 搜索插入位置

搜索插入位置题目:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为 O(log n) 的算法。示例 1:输入: nums = [1,3,5,6], target = 5输出: 2示例 2:输入: nums = [1,3,5,6], target = 2输出: 1示例 3:输入: nums = [1,3,5,6], target = 7输出: 4示例 4:输入: num

2021-09-13 12:50:13 476

原创 278.第一个错误的版本

278.第一个错误的版本。

2021-09-13 12:27:25 474

原创 二分查找(对半搜索)

二分查找(对半搜索)本文采用Java书写选择排序,其他语言类似可以借鉴着写所谓二分查找和对半搜索,即对于升序(或者降序)的有序序列进行查找时,由于有序我们可以直接从中间查找相等返回。大于则在右侧子序列中进行二分查找,小于则对左侧子序列进行二分查找。直至找到或者子序列只有一个元素为止。代码实现迭代方法实现public int binSearch(int[] nums, int target) { int index, low = 0, hight=nums.length-1; wh

2021-09-13 11:42:50 1259

原创 十大排序算法之堆排序

十大排序算法之堆排序本文采用Java书写选择排序,其他语言类似可以借鉴着写

2021-09-13 00:23:35 1266 1

原创 完全二叉树

完全二叉树定义: 一棵深度为k的有n个结点的二叉树,对树中的结点按从上至下、从左到右的顺序进行编号,如果编号为i(1≤i≤n)的结点与满二叉树中编号为i的结点在二叉树中的位置相同,则这棵二叉树称为完全二叉树。例子:如下,性质:具有n个结点的完全二叉树的深度(注:[ ]表示向下取整)如果对一棵有n个结点的完全二叉树的结点按层序编号, 则对任一结点i (0≤i≤n-1) 有:如果i=0, 则结点i是二叉树的根, 无双亲;如果i>0, 则其双亲parent (i) 是结点[(i-1)/2

2021-09-12 23:57:47 1759 1

原创 python字符串使用技巧

python字符串使用技巧该文章仅为查询使用,当作字典用的。前面可能会有的少,后面会慢慢补齐的,有补充的也欢迎在评论区留言呀strip() : 去除字符串结尾空格,不改变原字符串,生成新的字符串split() : 将字符串按照标识符分割生成列表,默认空格isnumeric() : 判断是否全部为数字,针对unicode对象...

2021-09-07 23:43:55 475

原创 python排序之sort和sorted

python排序之sort和sorted在使用python的时候很多时候需要用到排序操作,自己挨个去排太麻烦,而且效率也比较低下。因此学会使用Python自带的排序函数就显得尤为必要了。python排序主要有两种方法sort和sortedsort: 只针对于列表元素sorted:针对于所有可迭代对象排序小tips: 不止可以指定一个排序条件哦,可以指定多个排序条件用括号括起来就好sort()函数详解语法:list.sort( key=None, reverse=False)k

2021-09-07 23:12:36 272 1

原创 ubuntu安装VMware Tools

ubuntu安装VMware Tools安装VMware Tools安装包安装VMware Tools 安装包为灰色安装VMware Tools安装成功安装VMware Tools安装包点击左上角的虚拟机,里面会弹出安装VMware Tools,直接点击即可安装VMware Tools 安装包为灰色首先关闭虚拟机,如下图,点击关闭虚拟机,或者打开命令行输入 poweroff关闭后,点击虚拟机-》设置如果有软盘则,将CD/VCD 以及软盘,全部修改为物理驱动如果没有软盘则,将CD?DV

2021-09-03 16:08:25 2501

原创 python爬虫之urllib库详解

python爬虫之urllib库详解urllib库用于操作网页 URL,并对网页的内容进行抓取处理urllib 包 包含以下几个模块:urllib.request - 打开和读取 URL。urllib.error - 包含 urllib.request 抛出的异常。urllib.parse - 解析 URL。urllib.robotparser - 解析 robots.txt 文件python爬虫主要用到的urllib库中的request和error模块下面我们来详细说明一下这两

2021-09-03 00:15:30 5986

原创 pip2升级报错 ( def read(rel_path: str) ->str: )

pip2升级报错报错解决方法原因:一开始我是想自然pip无法安装,那么我就试一下手动安装。结果仍然是这个问题。但是问题已经定位,可是我仍然不知道如何解决,查阅了一下百度发现,这种情况可能是版本升级跨度较大,低级版本无法直接升级到高级版本,也就是下面圈起来的一行,执行报错。解决:百度给了一种思路,可以尝试安装距离想要安装较近的版本,因此我们选择20版本,距离21较近。python -m pip install --user --upgrade pip==20.2.4 #(换成你想要的

2021-08-31 19:38:34 19294 4

原创 十大排序算法之快速排序(两种方法)

十大排序算法之快速排序本文采用Java书写选择排序,其他语言类似可以借鉴着写思想:

2021-08-29 21:12:28 1208 4

原创 荷兰国旗问题

荷兰国旗问题问题:给定一个数组arr,和一个数num,请把小于num的数放在数组的左边,等于sum的数放在数组的中间,大于num的数放在数组的右边。要求额外空间复杂度O(1),时间复杂度为O(N)。由于荷兰的国旗是三个颜色刚好对应三个部分,因此也叫荷兰国旗问题。思路:引入两个具有指向性的变量,分别指向数组开头和结尾。i从数组开头进行遍历,如果小于sum则与指向开头的变量互换,变量指向右移,i++;如果等于sum,则仅执行i++;如果大于sum,则与指向结尾的变量互换位置,变量指向左移,不执行i++操作

2021-08-28 22:19:43 548

原创 逆序对问题

逆序对问题题目:所谓逆序对问题就是,在一个数组中,左边的数如果比右边的数大,则这两个数构成一个逆序对举例:1 3 4 2 5<1,3>、<1,4>、<1,2>、<1,5>、❤️,4>、❤️,5>、<4,5>、<2,5>代码实现普通的暴力破解为:N + N-1+ N-2 + N-3 + ···+ 1 时间复杂度为:O(N^2)借助归并排序可以实现时间复杂度为:O(N*logN)归并排序详解package

2021-08-28 10:19:44 705

pwnable-echo2的附件

pwnable-echo2的附件

2021-11-16

一个小小的百度的静态网页文件

BeautifulSoup解析使用

2021-09-03

沙老师逆向作业CM-2.rar

适用南京邮电大学逆向分析该学科

2021-04-11

沙老师逆向作业CM-1.rar

适用南京邮电大学逆向分析该学科

2021-04-11

沙老师的逆向作业Crackme3.exe

适用南京邮电大学逆向分析该学课

2021-04-11

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除