网络安全最全一些基本PHP函数的安全问题(2),这份资料可帮你解决95%的问题

还有兄弟不知道网络安全面试可以提前刷题吗?费时一周整理的160+网络安全面试题,金九银十,做网络安全面试里的显眼包!

王岚嵚工程师面试题(附答案),只能帮兄弟们到这儿了!如果你能答对70%,找一个安全工作,问题不大。

对于有1-3年工作经验,想要跳槽的朋友来说,也是很好的温习资料!

【完整版领取方式在文末!!】

93道网络安全面试题

内容实在太多,不一一截图了

黑客学习资源推荐

最后给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

1️⃣零基础入门
① 学习路线

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

image

② 路线对应学习视频

同时每个成长路线对应的板块都有配套的视频提供:

image-20231025112050764

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以点击这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!


这个时候,我们在常见的 CTF 比赛中,会遇到一些 MD5 碰撞的类型,常见的赛题形式如下:



<?php header("Content-Type:text/html;charset=utf-8"); $flag='THIS IS THE FLAG'; if($_GET['info1']!=$_GET['info2']){ if(md5($_GET['info1'])==md5($_GET['info2'])){ echo $flag.'
'; echo "info1=".md5($_GET['info1']).'
'; echo "info2=".md5($_GET['info2']).'
'; } else { echo "?"; }} ``` 解题方法十分简单,百度搜索 MD5 值相同的数据,因为`==`不区分数据类型,因此我们可以 输入如下的参数,比如`info1=s878926199a&info2=s155964671a`。 ![image.png](https://img-blog.csdnimg.cn/img_convert/e243e6e98a437082b8a9c443e6b85a35.png) 此时我们会发现,其实`info1`和`info2`的 md5 值是不一样的,那为什么为通过检测呢? 本质上原因是因为我们在进行比较的时候,使用的是**弱类型比较**,两个开头为0的md5值相同。所以会通过测试。 ### 02-intval 函数 在PHP中,`intval()` 函数用于获取变量的整数值。如果变量是一个字符串,`intval()` 会尝试将该字符串转换为整数。如果变量是一个浮点数,`intval()` 会截断小数部分,只返回整数部分。如果变量是布尔值,`true` 会被转换为 `1`,`false` 会被转换为 `0`。如果变量是null,则返回 `0`。 函数原型如下: ``` int intval(mixed $value [, bool $base = NULL]) ``` 参数说明: * `$value`:需要转换的变量。 * `$base`:可选参数,指定进制。如果设置,`intval()` 会假设 `$value` 是一个进制数(基数为2-36之间),并将其转换为相应的整数。 示例: ``` $str = "123"; $int = intval($str); echo $int; // 输出 123 $float = 123.456; $int = intval($float); echo $int; // 输出 123 $bool = true; $int = intval($bool); echo $int; // 输出 1 $null = null; $int = intval($null); echo $int; // 输出 0 $hex = "1a3f"; $int = intval($hex, 16); echo $int; // 输出 2631 ``` 需要注意的是,`intval()` 函数不会在数字前后添加空格,也不会将数字转换为字符串。如果需要将整数转换为字符串,可以使用 `strval()` 函数。 常见的 CTF 赛题形式如下: ``` <?php $flag='this is the flag 2024'; if(isset($_GET['num'])){ $NUM=$_GET['num']; if($NUM==="4476"){ die("GO out!"); } if(intval($NUM,0)===4476){ echo $flag; }else{ echo intval($NUM,0); } } ``` 此时`num`值为 8 进制的=010574,实际转换为十进制即为 4476,因此我们只要传入`info=010574`即可通过测试。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/0e6b523b6fc743b89476b2aabd1b9361.png) ### 03-strpos 函数 在PHP中,`strpos()` 函数用于查找一个字符串在另一个字符串中首次出现的位置。它的基本语法如下: ``` int strpos(string $haystack, string $needle, int $offset = 0) ``` 参数说明: * `$haystack`:需要搜索的字符串。 * `$needle`:需要在 `$haystack` 中搜索的字符串。 * `$offset`:可选参数,指定开始搜索的位置。默认值为 `0`,表示从 `$haystack` 的开头开始搜索。 `strpos()` 函数会返回 `$needle` 在 `$haystack` 中首次出现的位置的索引,如果未找到 `$needle`,则返回 `false`。 示例: ``` $haystack = "Hello, World!"; $needle = "World"; $pos = strpos($haystack, $needle); if ($pos !== false) { echo "'$needle' 在 '$haystack' 中首次出现的位置是:$pos"; // 输出:'$needle' 在 '$haystack' 中首次出现的位置是:6 } else { echo "'$needle' 在 '$haystack' 中没有找到"; } ``` 在 CTF 中,`strpos`函数常见的绕过方法就是使用`%0a`作为换行,加上目标参数进行绕过。 ### 04-in\_array 函数 `in_array()` 函数在 PHP 中用于检查数组中是否存在指定的值。它的基本语法如下: ``` bool in\_array(mixed $needle, array $haystack, bool $strict = false) ``` 参数说明: * `$needle`:需要查找的值。 * `$haystack`:需要搜索的数组。 * `$strict`:可选参数,如果设置为 `true`,`in_array()` 将使用严格比较(即类型和值都相同),否则将使用宽松比较(仅值相同)。默认值为 `false`。 `in_array()` 函数会返回 `true` 如果 `$needle` 存在于 `$haystack` 数组中,否则返回 `false`。 示例: ``` $array = array("apple", "banana", "cherry"); if (in\_array("banana", $array)) { echo "找到了 'banana' 在数组中。"; } else { echo "没有找到 'banana' 在数组中。"; } ``` **其中当我们在函数**`**in_array()**`**中没有设置第三个参数为**`**true**`**时候,假设有一个安全漏洞,攻击者可以控制 **`**$haystack**`** 数组:** ## 学习路线: 这个方向初期比较容易入门一些,掌握一些基本技术,拿起各种现成的工具就可以开黑了。不过,要想从脚本小子变成黑客大神,这个方向越往后,需要学习和掌握的东西就会越来越多以下是网络渗透需要学习的内容: ![在这里插入图片描述](https://img-blog.csdnimg.cn/7a04c5d629f1415a9e35662316578e07.png#pic_center) **网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。** **[需要这份系统化资料的朋友,可以点击这里获取](https://bbs.csdn.net/topics/618540462)** **一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值