R0ot's Blog

分享代码,记录生活

0%

道可道非常道 名可名非常名

无名天地之始 有名万物之母

SSRF简介

SSRF(Server-Side Request Forgery)翻译过来是服务器端请求伪造,一般情况下,SSRF攻击的目标是外网无法访问的内部系统。如果服务器提供了从其它服务器请求数据的功能,攻击者就可以构造恶意的路径,例如,使服务器端向内网其他服务器发起请求,由于请求是由服务端发起的,所以服务端能够成功读取一些隔离文件,然后返回给攻击者,就造成了ssrf攻击

简单来说,利用一个可以发起网络请求的服务器当作跳板来攻击内部其他服务器。

阅读全文 »

简介

PHP是一种弱类型语言,这意味着变量的类型是根据上下文自动推断的,不需要强调声明(如c语言),带来方便的同时,也带来了许多安全隐患
PHP的比较也分为弱类型(==)比较和强类型(===)比较,还有(!=)和(!==)

md5比较绕过

在ctf赛题中,经常会出现类似于这样的一段代码,要求我们传入两个参数的值不同,而md5()后的值相同

1
2
3
4
5
$a=$_GET['a'];
$b=$_GET['b'];
if ($a!=$b && md5($a) ==md5($a)){
echo 'ok!!';
}
阅读全文 »

经过一段时间的学习,开始刷题之旅,题目都来自BUUCTF平台
大致分为简单,签到,中等三个等级(困难的还做不出~~~),每道题写个wp

简单难度

简单难度大概就是新生赛的难度

阅读全文 »

SSTI简介

SSTI 是服务器端模板注入(Server-Side Template Injection)的缩写。它实际上也是一种注入漏洞,通过与服务端模板的输入输出交互,在过滤不严格的情况下,构造恶意输入数据,从而达到读取文件或者getshell的目的。

不同的语言下有不同的框架,不同的框架又有不同模板,不同的语言模板对应的注入点和闭合可能略有区别,但本质原理都是一样的,就是将用户输入的数据不加处理就添加在了前端页面上,然后再用模板渲染时,就有可能把用户输入的数据当成本身的语法(和SQL注入一样的),从而导致安全问题

使用模板可以让静态的html页面动态的展示内容,模板是一个响应文本的文件,其中占位符(变量)表示动态部分,告诉模板引擎具体的值需要从使用的数据中获取.使用真实值替换变量,在返回最终得到的字符串,这个程称为渲染

如果先将前端页面渲染,再将用户输入的数据添加在页面上,这样模板已经固定,就不会产生ssti的漏洞了(感觉和SQL的预处理又有点像)

有一个经典的图可以简单的判断是属于的哪一个模板

红色箭头代表内容未被当做命令执行,绿色代表成功当做命令执行

阅读全文 »

简介

所谓文件包含漏洞就是指,后端代码使用了一些文件包含的函数,如果用户能控制这些函数的参数,就可以实现任意代码读取,getshell,命令执行等多种攻击手段
文件包含漏洞可以简单的分为本地文件包含远程文件包含,本质上没有区别,开发人员应该尽可能的避免用户控制文件包含函数的参数,或是进行严格的过滤

阅读全文 »

简介

简单来说,序列化是值将数据结构或是对象转换为一种格式(每种语言不太相同),目的是为了更方便储存或是传输
反序列化就是序列化的逆过程,将序列化后的数据转回原始的数据结构或对象
暂时分为phpjava两个方向来讲述反序列化漏洞(也许有一些Python),这篇主要讲述PHP的反序列化漏洞以及一些技巧

阅读全文 »

想要进行绕过的话,需要根据不同的系统的特性采用不同的方式,在ctf中还是以Linux居多

Linux

shell

Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言,Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口(命令解释器)

sh(全称 Bourne Shell): 是UNIX最初使用的 shell,而且在每种 UNIX 上都可以使用。Bourne Shell 在 shell 编程方面相当优秀,但在处理与用户的交互方面做得不如其他几种 shell。

bash(全称 Bourne Again Shell): LinuxOS 默认的,它是 Bourne Shell 的扩展。与BourneShell 完全兼容,并且在 Bourne Shell 的基础上增加了很多特性。可以提供命令补全,命令编辑和命令历史等功能。它还包含了很多 C Shell 和 Korn Shell 中的优点,有灵活和强大的编辑接口,同时又很友好的用户界面。
我们常用(默认)的就是bash(bourne again shell)

阅读全文 »

命令执行漏洞

原理:开发者为了实现网站的一些特殊功能时(比如ping命令)需要使用一些特殊函数,这些函数可以执行系统命令,如果没有进行严格的过滤,那么用户就可以通过这个函数实现一些危险的命令,或者加入一些危险的参数,从而获取信息

危险函数

这些函数如果可以被用户注入命令,就会带来危险性,写了个大概意思,具体参考php文档

阅读全文 »

php函数

error_reporting(error_level)

设置应该报告何种 PHP 错误
error_level=0 是关闭所有php错误报告

fwrite(参1,’参2’,参3)

将参数2写入参数1,最长字符数为参3

mysql_query($sql)

  1. 作用
    发送一个 MySQL 查询
  2. 注意
    此扩展在 PHP 5.5.0 中已弃用,并在 PHP 7.0.0 中被删除。
    替代方案包括:mysqli_query() PDO::查询()
    (i)表示改进,其执行速度更快.
    阅读全文 »