自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(54)
  • 问答 (2)
  • 收藏
  • 关注

原创 NewStarCTF pwn

NewStarCTF中pwn的一些wp

2022-10-21 10:49:08 977 1

原创 RecyclerView的点击事件的两种实现方式

文章目录RecyclerView的点击事件(一)在适配器的onBindViewHolder方法中去添加响应事件(二)写回调方法RecyclerView的点击事件RecyclerView中没有提供类似与setOnItemClickListener()这样的注册监听方法,而需要我们自己给子项具体的View去注册点击事件。相比与ListView来说,RecyclerView的功能更加强大,不仅可以实现对点击子项的响应,而且对子项的每一个view都可以轻松的实现点击响应。下面通过两种方法来实现:(一)在适配

2021-01-10 10:09:34 3068 1

原创 CTFd+CTFd-whale动态靶机环境搭建

CTFd+CTFd-whale动态靶机插件搭建文章目录CTFd+CTFd-whale动态靶机插件搭建1.安装docker2.安装docker-compose3.Frp的配置4.CTFd和CTFd-whale插件的安装环境Ubutun20.04-desktop1.安装dockercurl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun或者curl -sSL https://get.daocloud.io/docker

2020-11-29 10:18:53 6747 8

原创 A* 算法求第K短路径长度

文章目录A* 算法求第K短路径简介:复杂度分析:例子:A* 算法求第K短路径简介:A*是一种搜索算法,一般基于一个估价函数f(x) = g(x) + h(x),通过这个函数来进行有方向的搜索以提高搜索的效率。其中g(x)指从初始状态到当前状态的花费,h(x)为当前状态到终状态的花费的估计值,以两者之和来估计起始状态到终状态的总花费f(x)。在A*算法中,通过优先搜索最符合要求的f(x)表示的状态以提升搜索效率。在求第k短路的问题中,g(x)指的是由起点到达当前点的路径长度,h(x)指当前点到达终点的

2020-11-22 21:27:14 1726 3

原创 Shell脚本知识点

Shell脚本一、脚本的建立和运行二、Shell程序的参数位置三、基本语法四、常见操作shell是用户和系统内核交互的程序。我们经常使用的shell是bash。下面简单的复习以下bash脚本的使用。一、脚本的建立和运行bash脚本常见的有两种运行方式:一种是输入命令让bash交互的执行它们,另一种就是将命令写入到文件中,然后将文件作为程序来调用。流程如下:1.创建shell脚本 2.赋予文件可执行权限(chomd +x shell.sh) 3.运行程序(./shell.sh)二、Shell程序

2020-11-16 23:43:48 209

原创 栈溢出之构造函数覆盖返回地址

栈溢出利用已知函数覆盖返回地址题目:攻防世界 level2查看文件的保护,发现没有栈哨,可以考虑覆盖返回地址。利用IDA进行静态分析,找到vulnerable_function()函数ssize_t vulnerable_function(){ char buf; // [esp+0h] [ebp-88h] system("echo Input:"); return read(0, &buf, 0x100u);}read函数读入了0x100的大小到缓冲区,但是缓冲区只

2020-10-20 20:43:19 744

原创 栈溢出之覆盖函数返回地址

栈溢出之覆盖函数返回地址原理利用原理栈溢出:栈溢出就是栈上的缓冲区填入过多的数据,超出了边界,从而导致了栈上原有数据被覆盖。函数调用的时候,会开辟一个栈帧结构。首先会将调用的函数的参数入栈,然后依次压入调用函数的返回地址和当前栈底指针寄存器(BP)的值入栈。其中压入返回地址是通过call指令来实现的。在函数调用结束的时候,将栈指针SP重新指向帧指针BP的位置,并弹出BP和返回地址IP。这样函数状态将恢复成进入子函数的状态,实现了函数栈的切换。当用call指令调用一个函数的时候,首先会将IP寄存

2020-10-18 23:00:56 3117 2

原创 十六进制和字符串之间的相互转化(python3)

目录十六进制转和字符串之间的转化十六进制到字符串字符串到十六进制十六进制转和字符串之间的转化十六进制到字符串#!/usr/bin python3#-*-coding=utf-8-*-import binascii#若传入的是一连串16进制串,可用以下函数def hex_to_str1(s): #s="68656c6c6f" s=binascii.unhexlify(s) #unhexlify()传入的参数也可以是b'xxxx'(xxxx要符合16进制特征) print(s.decode(

2020-09-19 23:55:28 16170 1

原创 z3约束求解器使用

Z3约束求解器Z3的使用安装用法实例Z3的使用z3作为一种约束求解器,在CTF中可以用来解一些密码学,二进制逆向等问题。本文简单的介绍了z3的安装,用法,并且通过一个逆向题目来具体实践一下。安装pip install z3-solver用法1.声明变量z3中有3中类型的变量,分别是整型(Int),实型(Real)和向量(BitVec)Int-整数型from z3 import *a = Int('a')#声明单个整型变量a,b = Ints('a b')#声明多个整型变量Re

2020-09-17 22:43:36 6796 2

原创 XML外部实体注入(XXE)的原理和应用

文章目录XXE注入一、XML简介二、XML实体三、CTF中XEE攻击XXE注入XXE注入全称是xml external entity 注入,也就是xml外部实体注入。XXE漏洞发生在应用程序解析输入的XML时,没有禁止外部实体的加载,导致可加载恶意外部文件,造成文件读取,命令执行等攻击。一、XML简介XML是一种用户自定义的标记语言,主要用于数据的存储和传输。XML文档有自己的一个格式规范。是由DTD(document type define)来控制的。例如:<?xml version=

2020-08-27 22:16:22 5418 1

原创 BUUCTF web(一)

题目[MRCTF2020]你传你????呢[MRCTF2020]Ez_bypass[BJDCTF2020]ZJCTF,不过如此[MRCTF2020]你传你????呢考点:上传.htaccess+图片马首先上传.htaccess文件,内容如下,注意要修改Content-Type类型为图片类型(如image/png)<FilesMatch "shell">SetHandler appliaction/x-httpd-php</FilesMatch>然后上传一个shell,

2020-08-23 22:34:31 984

原创 DVWA文件包含,上传,sql注入靶场

文件包含什么是文件包含?在php中文件包含主要是指调用了include(); include_once(); require(); require_once()函数。这些函数能够将包含的文本当做php代码去执行,而不管该文本是不是以php为扩展名的。文件包含可以分为本地文件包含()和远程文件包含。区别在于远程文件包含需要将php.ini文件中的 allow_url_fopen设置为On(默认...

2020-08-07 16:00:23 259

原创 条件竞争实验-多线程竞争访问

条件竞争的原理是没有对临界资源(共享变量)实现互斥访问,这就可能导致多线程访问时出现结果的不可再现性。解决方法可以是加锁,对临界区的操作要有原子性。实验环境: wamp,burpsuit案例一个文件上传操作,主要源码如下:<?php header("content-type:text/html;charset=utf-8"); if($_FILES["myfile"]["error"] > 0){ echo "upload error"; }else{ $filenam.

2020-08-07 11:19:34 482

原创 BFS之迷宫问题-输出路径

迷宫问题引言例题一(打印坐标)例题二(打印方向)引言广度优先搜索(BFS)可以很方便的去解决迷宫问题。根据广度优先搜索的特点,利用BFS得到的路径就是最短的路径。对于简单的问最短路径长度的问题。我们可以通过在表示位置的结构体中加上一个step变量,在BFS的时候逐步更新step。当到达终点的时候返回最终的step即可。而对于要打印路径问题,就需要额外的开一个数组来存放当前结点的前驱结点的信息。通过两个例子来说明一下:例题一(打印坐标)用一个二维数组表示一个迷宫,其中的1表示墙壁,0表示可以走的

2020-06-30 21:39:51 2895 2

原创 java web中的分页操作

分页是常见的数据展示的方式。实现分页的方法是很多的,比如可以一次性查出所有数据存放在一个容器中(比如List),然后用List的sublist()实现切片操作。但是这种方法对于大量的数据就很不合适。这里总结一种只返部分信息的方法。本质是构造SQL语句。核心的查询语句是这样的:select * from tables limit m,n;其中m表示从第几条数据开始,n表示查询的数据的条数。因此我们就可以利用这条语句,将n作为一页中最大的记录数,只需从前端接受第几页就可以简单的实现啦。Maaper.

2020-06-29 09:46:21 423

原创 对‘SDL_Init’未定义的引用问题和SDL init failure, reason is: No available video device问题解决方案

问题对‘SDL_Init’未定义的引用SDL init failure, reason is: No available video deviceLinux上运行SDL的C程序时一些问题的解决方案:对‘SDL_Init’未定义的引用遇到以下问题:对‘SDL_Init’未定义的引用对‘SDL_GetError’未定义的引用对‘SDL_SetVideoMode’未定义的引用对‘SDL_GetError’未定义的引用对‘SDL_Quit’未定义的引用对‘SDL_MapRGB’未定义的引用对‘

2020-05-13 11:07:18 1635

原创 PHP中MD5常见绕过

PHP中md5的绕过md5($password,true)的SQL注入问题两变量值不相等,md5计算散列值后相等的绕过MD5碰撞函数:md5($string,bool): 得到一个字符串散列值。其中第二个参数默认为false,表示该函数返回值是32个字符的十六进制数。若指定为true,则表示函数返回的是16字节的二进制格式(这样通过浏览器解析会出现乱码)。md5($password,true)的SQL注入问题这里需要注意一下MYSQL中的一些数值比较的特征。1.当数字和字符串比较时,若字符

2020-05-12 17:41:09 9752 6

原创 C/C++实现分数四则运算

分数四则运算分数表示注意事项代码实现这种问题主要是化简和规范问题,没有啥技巧性。通过一个结构体数组来表示一个分数:分数表示struct Fraction{ long long up,down;}注意事项需要注意的是下面三个规则:分子down大于零。若分数为负数,则令分子和分母都取相反数。若分数为0,这令分子up为0,分母down为1。分子和分母都没有除了1之外的公约数。代码实现写一遍代码熟悉一下:#include<cstdio>#include&lt

2020-05-12 00:25:08 1324

原创 Dijksta+DFS求最短路径问题

Dijkstra+DFSDijkstra+DFS思想Dijkstra实现DFS实现对于简单的求最短路径的问题,用Dijkstra算法就可以实现。当然,对于加了第二标尺的:比如:如果最短路径有多条,选择边权最小的(花费最小)或者是点权最大的(物质数目多的),也可以用Dijkstra算法,在路径相等的时候去更新第二标尺。然而,对于一些有多个标尺等更复杂的问题的时候。用Dijkstra+DFS算法。难度会降低许多。Dijkstra+DFS思想这个算法的思想是这样的:首先通过Dijkstra算法计算出最短

2020-05-10 23:49:45 1237

原创 2019极客挑战赛WEB部分PHP

题目链接:buuoj扫描敏感文件根据题目描述,应该网站是存在备份文件的,这里用dirsearch工具扫描一下可以发现备份文件是www.zip。(PS:BUUCTF对大量的请求会返回429错误码,建议调小一下扫描的线程数)。python3 dirsearch.py -u http://03670227-0f65-49ec-ad73-1075e1f979fc.node3.buuoj.cn/ -e...

2020-05-04 22:33:44 326

原创 一般树的遍历和图的遍历的比较

最近在做有关树的题目的时候,很多时候都会遇到要遍历树。这里就不再说关于二叉树的遍历了。具体可以参考一下另一篇博客二叉树。这里谈一下一般的树的遍历——也就是说一个结点的儿子结点的数目可以大于2。对于这种一般形式的树,常常使用邻接表来存储。也就是可以用vector<int>Adj这种形式,这就可以和图联系起来了。树和图的遍历方式都可以用深度优先搜索(DFS)和广度优先搜索(BFS)来实现...

2020-04-29 18:37:41 1394

原创 单源最短路径问题

单源最短路径问题概念Dijkstra算法Bellman-Ford算法概念单源最短路径问题是这样一个问题:在图中给定一个起点,求起点到其它顶点的最短距离。Dijkstra算法Dijkstra算法是用来解决边权非负的情况的。它的基本思想是设一个数组d[n]用来代表起点到其它顶点的最短距离。初始的时候d[start]为0,其它的d[i]设为无穷。然后从起点开始遍历整个图,若存在顶点u,使得d...

2020-04-17 22:58:54 356

原创 DAG图中的拓扑排序

拓扑排序概念思想代码应用概念DAG是指有向无环图,而拓扑排序是有向无环图的一个具体应用。拓扑排序是指将DAG图的顶点排成一个线性的序列。这个线性的序列是满足一下规则的:如果在DAG图中存在v->u,那么在这个序列中v一定是排在u的前面的思想拓扑排序在实际生活中有着广泛的应用。比如排课。如下图就是一个拓扑排序的例子:要求按照上图给出一个合理的排课序列。观察有向图的先序关系,我们...

2020-04-17 11:03:25 2222

原创 并查集操作

并查集并查集可以简单的看作是对集合的“合并和查找”。每一个元素都唯一属于一个集合,每一个集合都有唯一的一个根元素,来唯一标识这个集合。如何储存元素?可以用数组来存储元素,数组下标代表该元素,数组的值代表该元素的父元素。例如Father[a] = b。就代表a元素的父元素是b。如何表示根元素?规定一下,只要Father[i] = i ,则代表i为该集合的根元素。并查集的两个基本操作就...

2020-04-13 21:00:31 277 3

原创 PHP的序列化和反序列化

目录0x1 定义0x2 serialize()0x3 unserialize()0x4 PHP反序列化漏洞0x1 定义php使用serialize()这个过程被称为序列化,使用unserialize()这个过程被称作反序列化。0x2 serialize()用于序列化对象或数组,并返回一个字符串。序列化会保存对象中的所有变量,不会保存对象的方法,只会保存类的名字。PHP序列化...

2020-04-03 21:02:38 269

原创 XSS漏洞复现

XSS漏洞复现实验环境DVWAXSS(cross site script) 跨站脚本。属于代码执行的一种,这里执行的是前端代码,一般是javascript代码。对于反射型的XSS,攻击代码是在Http的响应包中。攻击者通过构造含有攻击代码的URL,被攻击者点击后,攻击代码在客户端解释执行。可以通过此恶意代码向攻击者的服务器发送被攻击者的敏感信息,从而实现攻击目的。下面测试一下,攻击者盗用...

2020-03-26 22:18:24 2746

原创 二分及其典型应用问题

二分查找经典问题:在一个严格递增的序列中找出给定的数x二分查找的前提条件是给定的序列要是有序的。这样的话算法的一开始令[left,right]为整个序列的下标区间,然后每次测试当前[left,right]的中间位置mid=(left+right)/ 2,判断A[mid]与欲查询的元素x的大小:若A[mid]=x,则查找成功。若A[mid] > x ,则说明x在mid位置的左边,因此向...

2020-03-23 11:37:13 263

原创 动态规划经典题目

下面来总结一下动态规划的经典题目最大连续子序列和Given a sequence of K integers { N1, N2, …, N**K }. A continuous subsequence is defined to be { N**i, N**i+1, …, N**j } where 1≤i≤j≤K. The Maximum Subsequence is the cont...

2020-03-17 20:12:48 543 1

原创 C++大整数运算

在程序设计中,会遇到一些大整数的运算,这时候即使是long long类型也无法表示大整数。这个时候就可以用结构体来实现大整数的存储,计算等操作。大整数的基本操作大整数的存储定义一个结构体来表示#include<cstdio>#include<algorithm>using namespace std;struct bign{ int d[1000]; in...

2020-03-09 22:09:48 1750

原创 C++中常用的数学函数

总结一些常用的数学函数,在程序设计中经常用这些函数来实现计算操作。这些函数需要加上头函数 #include<cmath>abs(x)用法:这个函数是用来实现对整数取绝对值的操作。fabs(double x)用法:这个函数是用来实现对浮点数取绝对值的操作。pow(double x,double y)用法:用来求x的y次方,注意这里的x,y要是double型,返回的...

2020-03-07 21:58:24 784

原创 二叉树

二叉树的定义首先需要知道什么是树,树是一种由顶点和边构成的一种数据结构。可以这样来定义满足连通,且边数等于定点数减一的结构就是树。在一棵树中只有一个根节点,并且树中一定是不存在环的。二叉树的定义,这里给出二叉树的递归定义:要么二叉树没有根节点,是一棵空树要么二叉树是由根节点,左子树,右子树组成,且左子树和右子树又是一个二叉树树的性质树可以没有结点,这样的树叫作空树。结点的度:...

2020-03-04 23:24:35 497

原创 ssh私钥泄露攻击

covfefe靶机测试本篇博客记录的是covfefe靶机测试过程。环境:kali linux,vm station, 靶机下面开始寻找flag之路首先在攻击机中查看一下本机的ip地址,为寻找局域网中的主机做好准备ifconfig可以看到攻击机的ip地址网络号为192.168.56 主机号为150然后用nmap去寻找目标ip地址(扫描主机号为1~255的ip地址)nmap...

2020-02-25 21:30:14 515

原创 静态链表

静态链表什么是静态链表?静态链表的应用1.结点的定义2.初始化3.链表的建立4.排序5.解题什么是静态链表?大家都知道对于链表来说,构成链表的结点在内存中不是连续存放的。与之相对的是数组,数组元素在内存中是连续存放的。此外,链表的大小是可以动态改变的,而数组的大小在程序运行过程中是固定不变的。在一些程序设计题目中,结点的数目比较小,或是给出了结点的地址的话。就可以用静态链表来实现。所谓的静...

2020-02-23 22:20:58 411

原创 搜索专题

在算法中搜索是一个很常见的操作,比如在树的遍历,图的遍历中,都会用到搜索。在程序设计中一般有两种搜索方式:深度优先搜索和广度优先搜索。深度优先搜索是以"深度"来度量,一般通过递归来实现。而广度优先搜索则是通过"广度"来类比,通过队列来实现。无论是深度优先搜索还是广度优先搜索,都是可以通过迷宫问题来形象化。这里就不在多写,下面主要总结一下深搜和广搜的常见解题方法和代码。深度优先搜索最优解的问题...

2020-02-22 10:00:24 174

原创 python中Image库,LSB隐写,图片的色彩模式

LSB隐写(最低有效位的隐写),是指通过改变图片中像素的最低位来实现信息的隐藏的。这种隐写方式需要图片是无压缩的位图,因此一般用于bmp和png图片。这里有需要注意的是图片的色彩格式,常见的格式有 RGB,灰度,和CMYK。对于RGB三原色格式来说,一个像素是由3个字节构成的,因此一个像素可以实现3位的信息隐藏。对于灰度格式,一个像素是由一个字节构成的,只能隐藏1位的信息。而对于CMKY,...

2019-11-17 08:42:59 1110

原创 VMware Station上安装Ubuntu Kylin

记一次VM虚拟机上安装Ubuntu的过程,(适用于新手)需要用到工具有两个:1.VMware WorkStation2.Ubuntu镜像(我用的是ubuntukylin-14.04-desktop-i386.iso)在官网上直接下载就好了打开VMware Station,选择文件->新建虚拟机选择经典就行,点击下一步选择稍后安装操作系统,点击下一步这里...

2019-11-02 23:56:43 320

原创 C++中常见容器总结

C++中的STL库中有许多好用的工具,通过它们能够快速的实现数据的储存和常见的运算,下面就总结一下一些常用的容器。1. string在C++中定义了字符串容器,要用它需要在头文件中声明#include<string>并且加上 using namespace std;a)声明string str1 ="abc"; string str2 = "def"; str1 +=...

2019-10-29 23:16:44 265

原创 Bugku杂项

怀疑人生拿到一个名字为zip的文件,将其命名为1.zip,解压后得到了如下图所示的一个文件夹对于第一个ctf1.zip,尝试去解压,发现要用密码。没有找到相关的提示,考虑直接用爆破。得到密码为:password解压后得到一串字符:XHU2Nlx1NmNcdTYxXHU2N1x1N2JcdTY4XHU2MVx1NjNcdTZiXHU2NVx1NzI=base64解码后为:\u6...

2019-10-29 08:12:03 349

原创 凯撒密码

恺撒密码(英语:Caesar cipher),或称恺撒加密、恺撒变换、变换加密,是一种最简单且最广为人知的加密技术。它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推。这个加密方法是以罗马共和时期恺撒的名字命名的,当年恺撒曾用此方法与其将军们进行联系。----百度百科...

2019-10-14 08:22:17 2098

原创 Springboot整合jsp

Springboot中整合jsp.Springboot的默认视图支持是Thymeleaf,今天就先实现一下jsp。学习过程中也遇到了一些坑,算是多总结总结吧。1.首先我们新建一个Project,选择Spring Initializr,然后next.2.接着为Group和Artifact名号名,packaging选jar.3.接着选Web -> Spring Web 即可4.设...

2019-10-04 23:55:59 399

空空如也

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

TA关注的人

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