鱼C论坛

 找回密码
 立即注册
查看: 2172|回复: 10

求问一段foreach()函数和过滤检测调用代码的具体意思

[复制链接]
发表于 2018-9-15 20:01:39 | 显示全部楼层 |阅读模式
10鱼币
function AttackFilter($StrKey,$StrValue,$ArrReq){  
    if (is_array($StrValue)){
        $StrValue=implode($StrValue);
    }
    if (preg_match("/".$ArrReq."/is",$StrValue)==1){   
        print "水可载舟,亦可赛艇!";
        exit();
    }
}

$filter = "and|select|from|where|union|join|sleep|benchmark|,|\(|\)";
foreach($_POST as $key=>$value){ 
    AttackFilter($key,$value,$filter);
}

如上代码,主要在foreach()函数中,我知道是POST输入的如果是数组,键名就会给$key,值给$value,然后作为参数传给AttackFilter()函数,进行安全过滤。
而按照函数中开头的条件判断语句:
 if (is_array($StrValue))
,只判断了传入的value值,这并不是一个数组呀?似乎也不会产生数组的存在,不知道这一句是什么意思。
我只能模糊地理解成foreach()将用户输入的语句传入AttackFilter()函数,然后在函数中进行安全过滤,希望有人能清晰地为我讲解一下。
谢谢!!

最佳答案

查看完整内容

抱歉,不习惯手机的输入。 post 是传入的数组,但每一次循环是取数组的元素。基本上这样的数组的元素是字典,所以下标索引变成键名。 每次循环,可以提出 key,value 两个值,再传入函数进行比对。不是数组哦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-9-15 20:01:40 From FishC Mobile | 显示全部楼层
抱歉,不习惯手机的输入。
post 是传入的数组,但每一次循环是取数组的元素。基本上这样的数组的元素是字典,所以下标索引变成键名。
每次循环,可以提出 key,value 两个值,再传入函数进行比对。不是数组哦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-9-16 22:53:20 | 显示全部楼层
。。。。。偶尔看到这个板块,居然就你一个人!!!!哈哈哈哈哈

点评

而且还落井下石……  发表于 2018-9-19 00:16

评分

参与人数 1荣誉 -5 鱼币 -5 收起 理由
claws0n -5 -5 请不要无意义灌水!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-9-19 00:11:40 From FishC Mobile | 显示全部楼层
什么语言 c# 吗?可以帮你找找,会花点时间。

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
正在卓尼小乱 + 5 + 5 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-9-19 11:04:35 | 显示全部楼层
claws0n 发表于 2018-9-19 00:11
什么语言 c# 吗?可以帮你找找,会花点时间。

哇,太过分啦!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-9-20 15:47:11 | 显示全部楼层
claws0n 发表于 2018-9-19 00:11
什么语言 c# 吗?可以帮你找找,会花点时间。

应该是是php,我给你题目链接:http://ctf5.shiyanbar.com/web/pcat/source.txt
这时实验吧的题目,要登录:http://www.shiyanbar.com/ctf/practice
题目名:因缺思订的绕过。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-9-20 15:48:10 | 显示全部楼层
RIXO 发表于 2018-9-16 22:53
。。。。。偶尔看到这个板块,居然就你一个人!!!!哈哈哈哈哈

这板块是没啥人。。。不过会躲起来的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-9-20 18:34:25 | 显示全部楼层
claws0n 发表于 2018-9-20 16:51
抱歉,不习惯手机的输入。
post 是传入的数组,但每一次循环是取数组的元素。基本上这样的数组的元素是字 ...

forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数

ok,我想我可能懂了,之前搜索的时候,没有注意foreach()函数是调用数组的每个元素,每个,很重要

我现在的理解是,foreach()遍历作为参数的数组的每个元素,每一次都将值传递给AttackFilter()函数,在那边进行过滤。

对吗?

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-9-20 18:39:25 | 显示全部楼层
claws0n 发表于 2018-9-20 16:51
抱歉,不习惯手机的输入。
post 是传入的数组,但每一次循环是取数组的元素。基本上这样的数组的元素是字 ...

鱼c的帖子怎么发不出去了?我刚刚发了提示没找到帖子
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-9-20 18:54:14 From FishC Mobile | 显示全部楼层
正在卓尼小乱 发表于 2018-9-20 18:34
forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数

ok,我想我可能懂了,之前搜索的时候 ...

嗯,他的数组是混合型的,元素是字典,c++ 的 map,或者看作是两行的数组。每次遍历,可提取其一或两个元素,然后传入函数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-31 02:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表