文件上传漏洞
叠甲这一部分包含了相当多的细碎的知识点,本文只是简单地整理一下目前学到的一些漏洞,并不全面,场景主要以一句话木马为主。主要以PortSwigger的lab为例。 什么是文件上传漏洞文件上传漏洞指的是服务器没有对上传文件的名称、类型、内容、大小等进行充分的验证,这种情况下,即使是最简单的图片上传功能也可以被用于上传危险文件。对于这种漏洞的攻击不只有上传,通常还涉及后续对文件的HTTP请求,用于触发服务器执行文件。 就验证而言,如果名称没有被充分验证,就可以借助上传同名文件覆盖关键文件;如果类型没有被验证,如.php文件就可能以代码形式运行;如果内容没有被充分验证,比如没有查验文件头或者或者是否符合标准结构,那么可以通过伪造文件头或者元数据注入上传文件;如果大小没有被验证,可以通过上传大量大型文件占满服务器的硬盘,也算是某种DoS攻击。 此外想要利用这种漏洞还需要对服务器处理上传文件的这个过程有一定的理解。一般分为处理静态文件和处理动态文件两种。前者包括了.png、.css、.js、.html等。后者包括.php、.jsp等。 静态文件的处理流程分为三步: 映射:假设请求的网址为...
路径遍历攻击
路径遍历攻击什么是路径遍历攻击路径遍历,又叫目录遍历,是一种能让攻击者读取服务器上的任意文件,某些情况下甚至可以写入服务器的文件,完全控制服务器。 漏洞出现的原因是没有对路径做过滤或者配置有缺陷。 对于Linux/Unix而言,通常把能读取到etc/passwd作为证明服务器有路径遍历漏洞的一种方式。etc/passwd是一个核心的系统配置文件,几乎存在于每一个Linux/Unix系统中。 etc/passwd文件本身的作用是存储系统上所有用户账户的基础信息,为了让系统正常运行,它被设置为所有用户和进程都可读。 /etc/passwd 文件的内容格式非常固定且极具特征,通常长这样: root:x:0:0:root:/root:/bin/bashdaemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologinwww-data:x:33:33:www-data:/var/www:/usr/sbin/nologin 对于Windows服务器,可以用windows\win.ini验证漏洞是否存在。 路径遍历实例以portswigger...
基本的盲注
sqli-labs五到八关——基本的布尔盲注流程及其脚本关于布尔盲注在sqli-labss的Less-5至Less-8中,页面不会回显数据库信息,如果语句正确会显示You are in……,语句错误则会报错。这种显示(真)/不显示(假)的状态符合布尔盲注的条件,可以用盲注的思路解决。整体上布尔盲注依然遵循数据库-表-字段的顺序,但在具体环节通常分为三个阶段:猜长度-猜字符-换位置。因为页面不会直接回显信息,所以要通过页面状态来确定猜测是否正确。常用到如下sql函数 12345length(str) --返回字符长度 substr(str,pos,len) --截取字符串mid(str,pos,len) --同substr,有时用于绕过过滤ascii(char) --字符转换为ASCII码ord(char) --同ascii,用于特殊字符集 此外,由于盲注需要精确到具体的某个字符,所以需要规范化,如 12limit 1 , 1 --跳过前1条数据,然后取1条数据substr((select table_name from ......)) --在SQL语言中,当一个sel...
最基本的MySQL注入流程
sqli-labs一到四关——最基本的注入流程 关于URL注入的过程离不开浏览器上方的地址栏,地址栏是URL的展示窗口。URL(Uniform Resource Locator)统一资源定位器定义了互联网上某个资源的坐标。问号?是查询字符串的起始标志,可以把网页地址和传递给服务器的数据分开。连接符&用于分割多个参数。井号#用于指定页面内的锚点,井号后的内容不会发给服务器。MySQL中’– ‘和’#’起注释符的作用,可以注释掉后面的内容。在URL中空格是非法字符,通常会被转换成’+’或者%20,PHP收到后会自动将它还原 基本闭合方式常见的几种闭合方式如下。在标准写法中用单引号闭合,但MySQL中双引号与单引号效果相同,是合法但不标准的一种写法。 12345SELECT * FROM `table_name` WHERE id = '1'SELECT * FROM `table_name` WHERE id = 1SELECT * FROM `table_name` WHERE id = “1”SELECT * FROM `table_name` WHE...
入门MySQL
关于MySQL作为目前最流行的数据库管理系统,是学习SQL注入的前置条件。本文将简单地梳理MySQL的基本知识,作为对我目前学习过的内容的复习,有不严谨处,欢迎指正。 什么是数据库数据库(database)是按照数据结构来组织、存储和管理数据的仓库。与文件存储相比,数据库的存储量级远超文件,可以轻松处理上亿数据。所以,我们现在使用RDBMS(Relational Database Management System:关系数据库管理系统)来存储和管理大数据量。 RDBMS的特点: 数据以表格形式出现 一行对应一组数据 一列对应一种属性 若干表格组成数据库 RDBMS术语 数据库(database):数据库是表格的集合 表格(table):表格作为数据的矩阵 行(row):一行包含相关联的一组数据 列(column):一列包含相同类型的数据 主键(primary key):一张表格只能由一个主键,通常用主键查询数据 外键(foreign):用于关联表格 MySQL基本的增删改查MySQL的语法类似自然语言。从操作对象上可以分为对数据库,对表格,对具体数据。 对数据库123C...
