您当前的位置: 首页 >  php

Snakin_ya

暂无认证

  • 8浏览

    0关注

    107博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

ctfshow—PHP特性

Snakin_ya 发布时间:2021-09-14 22:05:13 ,浏览量:8

PHP特性

以ctfshow平台题目为例

web89

intval() 函数用于获取变量的整数值。

intval() 函数通过使用指定的进制 base 转换(默认是十进制),返回变量 var 的 integer 数值。 intval() 不能用于 object,否则会产生 E_NOTICE 错误并返回 1。

web 90

int intval ( mixed $var [, int $base = 10 ] )

如果 base 是 0,通过检测 var 的格式来决定使用的进制:

  • 如果字符串包括了 “0x” (或 “0X”) 的前缀,使用 16 进制 (hex);
  • 如果字符串以 “0” 开始,使用 8 进制(octal);
  • 否则,将使用 10 进制 (decimal)。
web91

/i表示匹配大小写 字符 ^ 和 $ 同时使用时,表示精确匹配,需要匹配以php开头和以php结尾 /m 多行匹配 若存在换行\n并且有开始^或结束 符 的 情 况 下 , 将 以 换 行 为 分 隔 符 , 逐 行 进 行 匹 配 但 是 当 出 现 换 行 符 ‘ 符的情况下,将以换行为分隔符,逐行进行匹配 但是当出现换行符 `%0a`的时候, 符的情况下,将以换行为分隔符,逐行进行匹配但是当出现换行符‘cmd的值会被当做两行处理,而此时第二个if正则匹配不符合以php开头和以php结尾

web 94

strpos() 函数查找字符串在另一字符串中第一次出现的位置

Code
strpos(string,find,start)
参数描述string必需。规定要搜索的字符串。find必需。规定要查找的字符串。start可选。规定在何处开始搜索。

返回字符串在另一字符串中第一次出现的位置,如果没有找到字符串则返回 FALSE。

注释:字符串位置从 0 开始,不是从 1 开始。

web97

md5绕过

科学计数法绕过 列举几种脚本爆破出的类型

Code
IHKFRNS 0e256160682445802696926137988570
QLTHNDT 0e405967825401955372549139051580
QNKCDZO 0e830400451993494058024219903391
3908336290 0e807624498959190415881248245271
4011627063 0e485805687034439905938362701775
4775635065 0e998212089946640967599450361168
0e215962017 0e291242476940776845150308577824
aabg7XSs 0e087386482136013740957780965295
aabC9RqS 0e041022518165728065344349536299

数组绕过 php中的md5()函数无法处理数组类型数据,对于数组类型数据返回NULL,当我们传入两个数组时,就会变成两个NULL,也就是NULL==NULL,成功绕过

md5碰撞

利用md5碰撞,得到两个md5值相同但内容完全不一样的字符串

一.%D89%A4%FD%14%EC%0EL%1A%FEG%ED%5B%D0%C0%7D%CAh%16%B4%DFl%08Z%FA%1DA%05i%29%C4%FF%80%11%14%E8jk5%0DK%DAa%FC%2B%DC%9F%95ab%D2%09P%A1%5D%12%3B%1ETZ%AA%92%16y%29%CC%7DV%3A%FF%B8e%7FK%D6%CD%1D%DF/a%DE%27%29%EF%08%FC%C0%15%D1%1B%14%C1LYy%B2%F9%88%DF%E2%5B%9E%7D%04c%B1%B0%AFj%1E%7Ch%B0%96%A7%E5U%EBn1q%CA%D0%8B%C7%1BSP

二.%D89%A4%FD%14%EC%0EL%1A%FEG%ED%5B%D0%C0%7D%CAh%164%DFl%08Z%FA%1DA%05i%29%C4%FF%80%11%14%E8jk5%0DK%DAa%FC%2B%5C%A0%95ab%D2%09P%A1%5D%12%3B%1ET%DA%AA%92%16y%29%CC%7DV%3A%FF%B8e%7FK%D6%CD%1D%DF/a%DE%27%29o%08%FC%C0%15%D1%1B%14%C1LYy%B2%F9%88%DF%E2%5B%9E%7D%04c%B1%B0%AFj%9E%7Bh%B0%96%A7%E5U%EBn1q%CA%D0%0B%C7%1BSP
web98
$_GET?$_GET=&$_POST:'flag';
$_GET['flag']=='flag'?$_GET=&$_COOKIE:'flag';
$_GET['flag']=='flag'?$_GET=&$_SERVER:'flag';
highlight_file($_GET['HTTP_FLAG']=='flag'?$flag:__FILE__); 

这里是三目运算符和取地址,第二行和第三行是无用的,因为用不到,所以我们分析一下第一行和第四行

第一行:如果存在get传参,则把post传参地址给get,可以简单理解为post覆盖了get 第四行,如果get参数HTTP_FLAG的值为flag,就读取文件,也就是输出flag

web99
$allow = array();//设置为数组
for ($i=36; $i             
关注
打赏
1650510800
查看更多评论
0.0690s