Web漏洞文件上传
什么是文件上传漏洞
文件上传漏洞是web系统中常见的一种功能,通过文件上传能实现上传图片、视频,以及其他类型的文件,但是随着web中包含的功能越来越多,潜在的网络安全风险也就越大。
如果恶意用户上传了可执行的文件或者脚本,就会导致网站被其控制甚至会使其服务器沦陷,以至于引发恶意的网络安全事件。
文件上传漏洞原理
文件上传漏洞是指用户通过界面上的上传功能上传了一个可执行的脚本文件,而WEB端的系统并未对其进行检测或者检测的逻辑做的不够好。
通常来说文件上传功能是没有问题的,主要是服务器如何对上传的文件如何进行处理。
若WEB未对用户上传的文件进行有效的审查,若存在恶意用户对其上传一句话木马,从而实现控制WEB网站的目的。
什么是webshell
Webshell是一种网页后门,通常用asp、jsp或者php编写。
WebShell的常见的功能有执行系统命令、窃取用户数据、删除web页面、修改主页等。黑客在入侵了一个网站后,常常在将这些asp或php木马后门文件放置在网站服务器的web目录中,与正常的网页文件混在一起。
Webshell的分类
分类
体量
特点
大马
体积大 ...
Mysql注入的注入类型(2)
加解密注入
数据包当中的cookie内容经过了加密,可以将sql语句进行加密,然后注入
以sqli-labs-less21为例
在用户名密码栏当中输入admin
会回显我们的cookie数据
通过抓包工具可以看到cookie数据内容被加密了,加密方式为base64编码
解密得到admin原文,我们在后面加个单引号测试是否存在漏洞
可以看出,我们可以在后面加上单引号和后括号进行注入
将报错注入到cookie当中,然后进行加密
可以看到注入成功了
二次注入
二次注入是指已存储(数据库、文件)的用户输入被读取后再次进入到 SQL 查询语句中导致的注入。
二次注入是sql注入的一种,但是比普通sql注入利用更加困难,利用门槛更高。普通注入数据直接进入到 SQL 查询中,而二次注入则是输入数据经处理后存储,取出后,再次进入到 SQL 查询。
原理
在第一次进行数据库插入数据的时候,使用了get_magic_quotes_gpc对其中的特殊字符进行了转义,但是存入数据库时还是原来的数据,数据中带有'或者#,然后下次使用再拼凑sql语句中,形成二次注入
实例
以sqli-labs-le ...
Mysql注入的注入类型
union联合注入
联合注入,就是使用联合查询进行注入的一种方式,是一种高效的注入的方式,适用于有回显同时数据库软件版本是5.0以上的MYSQL数据库。至于为什么需要版本是5.0以上的MYSQL数据库,是因为MYSQL会有一个系统数据库information_schema,能很快的通过几条注入语句获取到想要的数据。
实例
以sqli-labs-less-1为例
查询表格的列数
?id=2' order by 3 --+
可以看出共有4列
爆出显示位
?id=-1'union select 1,2,3 --+
获取当前数据库的数据库名和版本号
?id=-1'union select 1,database(),version() --+
获取表名
?id=-1'union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security' --+
获取字段名
?id=-1’union select ...
渗透测试工具-sqlmap
SQLMap简介
SQLMAP是一个自动化的SQL注入工具,其主要功能是扫描,发现并利用给定的URL和SQL注入漏洞,其广泛的功能和选项包括数据库指纹,枚举,数据库提权,访问目标文件系统,并在获取操作权限时执行任意命令。
支持的数据库有MySQL, Oracle,PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird,Sybase和SAP MaxDB。
sqlmap支持五种不同的注入模式:
基于布尔的盲注,即可以根据返回页面判断条件真假的注入;
基于时间的盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断;
基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中;
联合查询注入,可以使用union的情况下的注入;
堆查询注入,可以同时执行多条语句的执行时的注入;
以下采用sqli-labs靶场为实例工具
SQLMap基础操作常用命令及参数
查看sqlmap的命令帮助手册1234567891011121 ...
DES加密原理
DES算法DES算法简介
DES是一种明文分组为64比特,有效密钥56比特,输出密文64比特的,具有16轮迭代的Feistel密码算法。
DES由初始置换,16轮迭代,初始逆置换组成。
算法加密流程描述
输入64位明文,进行初始置换IP
将明文分成左右两部分,为L0,R0,各32位
在密钥的控制下,进行16次运算
运算结束将左右交换,连接在一起再进行逆置换
最后输出64位密文
算法流程初始置换
将输入的明文按照上表进行置换
例如,输出块的第1位对应输入块的第58位,第2位对应第50位,依次类推
则输入块是D1~D64,输出块是D58,D50,D42,……,D15,D7;
然后将输出块左右分成L0和R0
加密16轮迭代密钥置换
密钥共有64位,16轮迭代后为48为子密钥
将密钥的奇偶位忽略不计(就是每个字节的第八位),64位变为56位,根本选择置换PC-1将56位的密钥分成左C0(28位),右D0(28位),表中第8、16、24、…、64位被忽略
根据轮数,将Cn,Dn进行左移
比如C0和D0进行第一次左移,根据表格,是左移一位,得到以下12345678910C149, ...
小迪安全 Day14 WEB漏洞-SQL注入之类型及提交注入
说明
在真实SQL注入安全测试中,我们一定要先明确提交数据及提交方法后再进行注入,其中提交数据类型和提交方法可以通过抓包分析获取,后续安全测试中我们也必须满足同等的操作才能进行注入。
简要明确参数类型
数字、字符、搜索、JSON等
直接输入的则为数字,如果是字符,则需要加上单引号
如果网站有搜索功能,那么搜索语句通常使用到%百分号
简要明确请求方法
GET,POST,COOKIE,REQUEST,HTTP头等
其中sql语句干扰符号:’,”,s,),}等,具体需看写法
参数字符型注入测试
sqli-labs less-5源代码123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-tran ...
小迪安全 Day13 WEB漏洞SQL注入之MYSQL注入
information_schema
information_schema 数据库跟 performance_schema 一样,都是 MySQL 自带的信息数据库。其中 performance_schema 用于性能分析,而 information_schema 用于存储数据库元数据(关于数据的数据),例如数据库名、表名、列的数据类型、访问权限等。
information_schema 中的表实际上是视图,而不是基本表,因此,文件系统上没有与之相关的文件。
SCHEMATA表
当前MySQL实例中所有数据库的信息
SHOW DATABASES;命令用来从这个表获取数据
获取数据库名称
select SCHEMA_NAME,DEFAULT_CHARACTER_SET_NAME from SCHEMATA;
TABLES表
存储数据库中的表信息(包括视图),包括表属于哪个数据库,表的类型、存储引擎、创建时间等信息。
SHOW TABLES FROM XX; 命令从这个表获取结果。
COLUMNS表
存储表中的列信息,包括表有多少列、每个列的类型等。SHOW COLUMNS FR ...
Sqli-labs安装教程
Sqli-labs简介
Sqli-labs 是一个印度程序员写的,用来学习 sql 注入的一个游戏教程。
Sqli-labs是一个帮你总结大部分SQL注入漏洞类型的靶场,学习SQL注入漏洞原理,复现SQL注入漏洞必备靶场环境。
Sqli-labs下载
这里提供Github的项目地址:https://github.com/Audi-1/sqli-labs
如果打不开就打开代理
Sqli-labs安装
首先,需要安装apache+mysql+php的环境,建议在Windows当中安装phpstudy进行搭建
将下载好的源码压缩包,解压到phpstudy/WWW目录下,如果出现文件重复是否替换的提示,选择是就可以了。
Sqli-labs配置
在WWW/sqli-labs-master/sql-connections文件夹当中,找到db-creds.inc文件,使用notepad++打开编辑
在user和pass两项中填写数据库的账户和密码,默认账户和密码都是root
如果不知道账户密码的,在phpstudy的数据库一栏中查看
在浏览器输入http://localhost/sq ...
Day12WEB漏洞-SQL注入之简要SQL注入
在本系列课程学习中,SQL注入漏洞将是重点部分,其中SQL注入又非常复杂,区分各种数据库类型,提交方法,数据类型等注入,我们需要按部就班的学习,才能学会相关SQL注入的核心。同样此类漏洞是WEB安全中严重的安全漏洞,学习如何利用,挖掘,修复也是很重要的。
SQL注入原理理解SQL注入
SQL注入是一种将SQL代码插入或添加到应用(用户)的输入参数中的攻击,之后再将这些参数传递给后台的sql服务器加以解析和执行。由于sql语句本身的多样性,以及可用于构造sql语句的编程方法很多,因此凡是构造sql语句的步骤均存在被攻击的潜在风险。Sql注入的方式主要是直接将代码插入参数中,这些参数会被置入sql命令中加以执行。间接的攻击方式是将恶意代码插入字符串中,之后将这些字符串保存到数据库的数据表中或将其当成元数据。当将存储的字符串置入动态sql命令中时,恶意代码就将被执行。
如果web应用未对动态构造的sql语句使用的参数进行正确性审查(即便使用了参数化技术),攻击者就很可能会修改后台sql语句的构造。如果攻击者能够修改sql语句,那么该语句将与应用的用户具有相同的权限。当使用sql服务器执行 ...
力扣 No.70爬楼梯
题目
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
使用C++
示例 1:12345输入:n = 2输出:2解释:有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶
示例 2:123456输入:n = 3输出:3解释:有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. 1 阶 + 2 阶3. 2 阶 + 1 阶
示例3:12345678输入:n = 4输出:5解释:有五种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶 + 1 阶2. 1 阶 + 2 阶 + 1 阶3. 2 阶 + 1 阶 + 1 阶4. 1 阶 + 1 阶 + 2 阶5. 2 阶 + 2 阶
难度属于简单,题目官方的解答啰哩吧嗦的,我就按照自己的想法说说吧
动态规划
每次可以选择登一阶或者两阶
我们发现第n阶的登顶方法数都是在n-1阶基础上+1,以及在n-2阶的基础上+2,所以这阶的方法数就是前两阶之和
用这个方法我们知道,在0阶设为1种,在1阶是1种,在2阶则是2种(因为1+1=2),以此类推第三阶则 ...