range_master靶场记录

deft   ·   发表于 2022-10-05 21:12:52   ·   学习杂记

urldecode二次注入

相关知识点:
大部分网站通常使用addslashes()、mysql_real_escape_string()、mysql_escape_string()函数或者开启GPC的方式来防止注入,如果某处使用了urldecode或者rawurldecode函数,则会导致二次解码生成单引号而引发注入。
我们利用%2527 传入时自动解码一次编程%25,这时addslasher()等相关函数找不到单引号等符号,然后后面又进行urldecode时,解码出 单引号 从而引发注入

宽字节注入

相关知识点:
magic_quotes_gpc(魔术引号开关)
magic_quotes_gpc函数在php中的作用是判断解析用户提交的数据,如包括有:post、get、cookie过来的数据增加转义字符“\”,以确保这些数据不会引起程序,特别是数据库语句因为特殊字符引起的污染而出现致命的错误。
单引号(’)、双引号(”)、反斜线(\)等字符都会被加上反斜线
简单来说:magic_quotes_gpc的作用:当PHP的传参中有特殊字符就会再前面加转义字符’\’,来做一定的过滤

宽字节容易出现的地方 :数据库编码为非英文编码那么就有可能产生宽字节注入。MySql的编码设置为了SET NAMES ‘gbk’或是 SET character_set_client =gbk,这样配置会引发编码转换从而导致的注入漏洞。

宽字节注入原理:宽字节SQL注入就是PHP发送请求到MySql时使用了语句
SET NAMES ‘gbk’ 或是SET character_set_client =gbk 进行了一次编码,但是又由于一些不经意的字符集转换导致了宽字节注入。

因为我们用单引号闭合的时候,会自动被转移添加\,
小技巧:有的时候我们也可以用16进制来代替字符串

二次解码注入
知识点:PHP中常用过滤函数如addslashes()、mysql_real_escape_string()、mysql_escape_string()或者使用魔术引号GPC开关来防止注入,原理都是给单引号(’)、双引号(”)、反斜杠(\)和NULL等特殊字符前面加上反斜杠来进行转义。
但是这些函数在遇到urldecode()函数时,就会因为二次解码引发注入。urldecode()函数是对已编码的URL进行解码。引发注入的原因其实很简单,PHP本身在处理提交的数据之前会进行一次解码,例如/test.php?id=1这个URL,我们构造字符串/test.php?id=1%2527,PHP第一次解码,%25解码成了%,于是url变成了/test.php?id=%27;然后urldecode()函数又进行了一次解码,%27解码成了’,于是最终URL变成了/test.php?id=1’,单引号引发了注入。rawurldecode()也会产生同样的问题,因此这两个函数需要慎用。

xss过滤尖括号

$str = strtolower(@$_POST["keyword"]);
$str = preg_replace("//", '', $str);

input是有一个比较奇葩的payload的,那就是

这个payload会把input当做img标签来用

此处用 “ type=image src=x onerror=alert(1) “ 闭合前后双引号,构造即可

打赏我,让我更有动力~

0 条回复   |  直到 2022-10-5 | 616 次浏览
登录后才可发表内容
返回顶部 投诉反馈

© 2016 - 2024 掌控者 All Rights Reserved.