PHP
文章平均质量分 77
Myon⁶
CNVD-2024-15127报送者
国家级HVV行动蓝队处置员
成都大运会重保
公安非法网站打击渗透项目
县级攻防演练渗透测试
应急响应团队SNERT队长
CISCN校三,西南赛区前40,全国前500
第十五届软件类-网络安全网络安全大学组一等奖
四川省第二届高校网络安全技能大赛决赛优秀奖
全国大学生网络安全精英赛全国复赛优秀奖
信息安全铁人三项长城杯三等奖
第二届SWCTF三等奖
第三届SWCTF出题人(Misc&Web)
全国大学生互联网+大赛银奖、铜奖
展开
-
关于 CTF 中 php 考点与绕过那些事的总结
_POST //获取post数据,是一个字典$_GET //获取get数据,是一个字典$_COOKIE //获取cookie数据$_SESSION //获取session数据$_FILES //获取上传的文件$_REQUEST //获取$_GET, $_POST, $_COOKIE中的数据$_SERVER //用户和服务器的基本信息数据库$_ENV //环境数据$GLOBALS //所有全局变量。原创 2024-03-04 23:58:26 · 1600 阅读 · 1 评论 -
php反序列化之pop链构造(基于重庆橙子科技靶场)
_toString() //当对象被当做字符串时自动调用(找echo $this->a这种、strtolower()等)__get() //调用类中不存在变量时触发(找有连续箭头的 this->a->b)__invoke() //对象被当做函数进行调用时触发(找有括号的类似$a()这种)__isset() //在不可访问的属性上调用isset()或empty()触发。__unset() //在不可访问的属性上使用unset()时触发。原创 2024-01-16 15:49:52 · 1095 阅读 · 1 评论 -
关于PhpStorm的安装激活与汉化
解压后在scripts目录下找到uninstall-all-user.vbs,双击打开,点击确定会看到done。根据以往经验,一般这种都需要配置环境变量,因此将添加bin到path也勾上。查看一下环境变量,可以看到php的环境变量被自动添加了。因为我是第一次使用这个软件,因此选择第二个,点击OK。可以免费使用30天,也可以购买,下面我们介绍如何激活。如果刚才没有勾选添加,则需要手动添加bin路径进去。至此,phpstorm已经成功激活。这里php自动添加到的是用户变量。下载好后,双击exe安装程序。原创 2024-01-10 13:08:08 · 964 阅读 · 1 评论 -
BUUCTF--[ACTF2020 新生赛]Include
确实过滤掉了很多伪协议,但是 php://filter 是可以使用的,这也是为什么我们能读取到flag.php。php://filter/read=convert.base64-encode/resource=[文件名]请求了file,内容是flag.php的内容:Can you find out the flag?但是这种编码读取php文件似乎不行,不过我们可以读其他的,比如etc下的passwd。应该是被检测了,我们读取一下index.php的源码看看。,这时我们就需要使用一些其他的编码方式。原创 2023-11-21 13:59:24 · 584 阅读 · 0 评论 -
[HCTF 2018]WarmUp全网最详细解释
对'hint.php'执行mb_substr函数,但是函数内一个参数是来自另一个函数mb_strpos的返回值,因此我们先看mb_strpos函数,使用.进行字符连接,即连接了一个问号字符 '?',得到hint.php?因为我们当前的source.php一般是在html目录下,往上是www,var,然后到根目录,flag一般就放在根目录下面,这里还有一个hint.php?检查'hint.php'是否在白名单中(白名单包括hint.php和source.php),在,继续执行后面的代码;原创 2023-11-08 15:18:38 · 1981 阅读 · 4 评论 -
CTF之PHP特性与绕过
A.A被传到URL中是A.A,但是到了php里面则会被转换为A_A,即保证了参数的传递,也避免了被strpos函数查找到;并且,在PHP8之前,如果参数中出现中括号[,那么中括号会被转换成下划线_,但是会出现转换错误,导致如果参数名后面还存在非法字符,则不会继续转换成下划线。在给参数传值时,如果参数名中存在非法字符,比空格和点,则参数名中的点和空格等非法字符都会被替换成下划线。isset()函数用于检查变量是否设置,如果设置了,则 id=$_GET['id'],否则 id=1。原创 2023-11-01 14:54:31 · 1193 阅读 · 0 评论 -
NewStarCTF2023week4-More Fast(GC回收)
当一个类创建之后它会自己消失,而 __destruct() 魔术方法的触发条件就是一个类被销毁时触发,而throw那个函数就是回收了自动销毁的类,导致destruct检测不到有东西销毁,从而也就导致无法触发destruct函数。当然这里保险一点的做法是先执行 ls 命令,然后再使用 ../../../ 进行目录穿越 ,找到flag所在目录,再进行 cat,并且这里过滤了关键字 flag,因此我们使用通配符 * 进行匹配。打开链接,存在很多个类,很明显是php反序列化漏洞利用,需要构造pop链 ,原创 2023-10-24 18:44:46 · 1153 阅读 · 5 评论 -
NewStarCTF2023week4-逃(反序列化字符串逃逸)
在反序列化的时候php会根据s所指定的字符长度去读取后边的字符,由于在序列化操作后又使用了str_replace()函数进行字符串替换,这就可能会改变字符串的长度,比如上面将bad替换为good,每替换掉一个bad,字符串长度明显就增加了1,而由于序列化之后s的值没变,但是进行了内容替换,改变了字符串长度,那么反序列化读取时,就并不能将原本的内容读取完全。得到:O:7:"GetFlag":2:{s:3:"key";而后面没有被读到的内容,也就是逃逸出来的字符串,就会被当做当前类的属性被继续执行。原创 2023-10-24 00:44:37 · 715 阅读 · 2 评论 -
NewStarCTF2023week2-R!!C!!E!!(非常详细完整解题全过程)
preg_replace 函数:执行一个正则表达式的搜索和替换,\w表示非单词字符,单词字符包括:a-z、A-Z、0-9,以及下划线,加上取非^就成了匹配所有的单词字符,+表示可以进行多个匹配,还匹配了左括号和右括号 ,((?先用 getallheaders() 获取全部请求头信息,再用 array_flip() 反转键值,即将 ls / 放到键名的位置,因为 array_rand 是随机取一个键名,反转之后获取到的就是命令,如果没有进行反转,获取到的就是myon。4、源码泄露,常见的有:HG泄露;原创 2023-10-15 17:27:45 · 840 阅读 · 6 评论 -
NewStarCTF2023week2-Unserialize?
创建了一个 evil 对象并设置了 cmd 属性,然后对对象进行了序列化。但要注意,在 PHP 中,如果一个类包含私有属性,并且你尝试序列化该对象,私有属性的值将不会被包括在序列化结果中。因此,在反序列化时,你无法访问 cmd 属性的值,因为它不会被正确反序列化。定义了一个eval类,该类下有一个私有变量cmd和公有成员函数destruct(),该函数在对象的所有引用都被删除或类被销毁时会自动调用;如果满足if条件,没有被匹配到,则会调用system函数,执行我们传入的cmd内容;在根目录下找到flag。原创 2023-10-15 00:08:04 · 6324 阅读 · 0 评论 -
NewStarCTF2023week2-include 0。0
构造payload:?构造payload:?因为flag在flag.php,并且这里过滤掉了base和rot,没关系我们使用其他编码方式输入输出即可。回到这道题,我先尝试的是使用php://input(用于执行PHP代码)1、flag在flag.php。原创 2023-10-14 10:48:55 · 632 阅读 · 1 评论 -
ctfshow萌新计划web9-14(正则匹配绕过)
可以使用通配符 * 或者 ? 进行模糊查询构造payload:?c=(~%8C%86%8C%8B%9A%92)('tac c*');或者:?c=(~%8C%86%8C%8B%9A%92)('tac ???fi??p??');即对我们想要执行的代码进行取反,url编码,再取反题目源代码里也有提示,flag在config.php里面原创 2023-10-12 18:40:08 · 492 阅读 · 0 评论 -
NSSCTF[SWPUCTF 2021 新生赛]hardrce(无字母RCE)
URL编码取反绕过正则实现RCE在取反之前PHP解释器并不知道是要执行一个函数,取反之后就算是一个函数也不会被当作代码执行。注意:在使用取反编码再取反进行绕过时,想要执行我们指定的代码,传入的payload必须要满足。原创 2023-10-11 15:06:32 · 1422 阅读 · 1 评论 -
php无字母数字rce绕过基础操作
在php中,反引号可以直接命令执行系统命令,反引号的作用是命令替换,将其中的字符串当成shell命令执行,返回命令的执行结果。反引号包括的字符串必须是能执行的shell命令,如果不是则会出错。当关键字 "php" 被过滤了之后,此时我们便不能使用了,但是我们可以用另外两种短标签进行绕过,并且在短标签中的代码不需要使用分号(;> 是为了闭合前面的php语句,后面则为执行命令的语句。url中的+表示空格,而要表示+号必须得用%2B,即URL编码。星号”*”指代任意字符数,问号“?原创 2023-10-10 23:41:53 · 573 阅读 · 0 评论 -
ctfshow-web12(glob绕过)
后面除了使用highlight_file()函数,也可以使用show_source()函数,后者就是前者的别名。print_r() 可以打印出复杂类型变量的值(如数组,对象) ,打印关于变量的易于理解的信息。glob("*") 会匹配任意文件,glob("*.php")则是匹配以php为后缀的文件。函数:返回一个包含匹配指定模式的文件名或目录的数组,如果失败则返回 FALSE。发现内容是一个数组,属于复杂类型变量,换用 print_r() 函数。原创 2023-10-10 14:23:46 · 636 阅读 · 1 评论 -
ctfshow-web11(session绕过)
当在代码中设置了session时,在http请求的消息头中会携带一个名为PHPSESSID的cookie,其值是一个32位16进制的字符串。服务端接收到这个cookie,根据其值在服务器中找到对应的session文件,从而实现保持与客户端链接状态的信息,其中session中存储着序列化的session键值等信息。strlen() 函数用来返回字符串的长度,如果提交的password和经过正则匹配替换后的字符串长度不相等,就会输出 sql inject error,die函数来终止脚本并显示错误消息。原创 2023-10-09 23:14:39 · 724 阅读 · 0 评论 -
ctfshow-web5(md5弱比较)
QLTHNDT 和 240610708经过md5加密后密文都以0e开头,PHP会当作科学计数法来处理,也就是0的n次方,得到的值比较的时候都相同。=== 是强等于:在比较前会先判断两种字符串类型是否相同,再进行比较,即先比较类型再比较值,需要都相等才会返回true。is_numeric()函数:检测字符串是否只由数字组成,如果字符串中只包括数字,就返回Ture,否则返回False。== 是弱等于:在比较前会先把两种字符串类型转成相同的再进行比较,它不会比较变量类型,只比较值。原创 2023-10-08 13:49:31 · 752 阅读 · 0 评论 -
ctfshow-web3(伪协议php://input的利用)
这是一个只读信息流,当请求方式是post的,并且enctype不等于”multipart/form-data”时,可以使用php://input来获取原始请求的数据,当enctype等于”multipart/form-data”时php://input是无效的。利用该方法,我们可以直接写入php文件,输入file=php://input,然后使用burp抓包,写入php代码。,php执行时会将post内容当作文件内容,从而导致。存在文件包含时直接使用PHP伪协议。,当传入的参数作为文件名打开时,可以。原创 2023-10-07 14:11:39 · 1010 阅读 · 0 评论 -
PHP特性之CTF中常见的PHP绕过
一、关于md5()和sha1()的常见绕过1、使用数组绕过2、 使用特殊字符串绕过二、strcmp绕过三、switch绕过四、intval绕过原创 2023-07-18 14:32:22 · 5273 阅读 · 1 评论 -
[NISACTF 2022]babyserialize(pop链构造与脚本编写详细教学)
一、理清pop链并进行标注二、如何编写相关脚本三、过滤与绕过1、waf的绕过2、preg_match的绕过原创 2023-07-06 00:44:48 · 1363 阅读 · 15 评论 -
[SWPUCTF 2021 新生赛] ez_unserialize
链尾(就是最终我们想要利用的地方),在echo $flag 并且include了flag.php往上看,发现只需要满足 再往上看,发现执行这条语句我们需要触发__destruct()函数__destruct是析构函数,会在对象的所有引用被删除或者当对象被显式销毁时自动执行,比如new完一个对象,当创建完成之后就不引用了,如果有赋值指向就会立马丢弃,触发destruct函数。这里还有一个__construct()构造函数,它是在实例化一个对象(即new时)会自动调用。原创 2023-07-05 16:59:47 · 1605 阅读 · 3 评论 -
Session 反序列化漏洞
Session 反序列化当序列化存储Session数据与反序列化读取Session数据的方式不同时,就可以利用引擎之间的差异产生序列化注入漏洞,session的反序列化漏洞就是利用php处理器和php_serialize处理器的存储格式差异。总的来说就是,我们先判断它是否存在这样一个漏洞,一般看到有这些比较具有特征性PHP代码我们就该想到这个方向,存在session反序列化漏洞的话,我们先进行序列化,然后在结果前添加 | (管道符),在传参页面进行上传,再去刷新读取页面即可。原创 2023-07-03 21:05:57 · 449 阅读 · 0 评论 -
PHP反序列化漏洞之Phar
pop链的构造、认识phar类型文件、制作phar文件、phar的上传与读取、漏洞利用的条件原创 2023-07-03 16:50:51 · 542 阅读 · 0 评论 -
i春秋 Misc Web 爆破-2
i春秋 Misc Web 爆破-2,代码审计,file()函数,file_get_contents()函数,show_source() 函数与highlight_file() 函数原创 2023-05-11 17:22:34 · 578 阅读 · 0 评论 -
代码审计之PHP基础铺垫
1、标记2、注释3、输出语句4、关键字5、常量的定义与使用6、预定义常量7、变量的赋值(传参赋值与引用赋值)8、可变变量9、双引号和单引号的区别10、heredoc结构和nowdoc结构11、其他符号原创 2023-05-09 13:13:11 · 366 阅读 · 0 评论 -
攻防世界-file_include(convert.iconv的使用)
攻防世界、file_include、convert.iconv的使用、iconv函数、PHP伪协议、文件包含、转换过滤器原创 2023-04-16 22:05:12 · 1031 阅读 · 2 评论 -
fileinclude(通过cookie赋值的文件包含)
cookie、文件包含、PHP伪协议、hackbar、php://filter、代码审计原创 2023-04-16 20:39:22 · 525 阅读 · 0 评论 -
fileclude(文件包含漏洞及php://input、php://filter的使用)
fileclude、文件包含漏洞、php://input、php://filter、file_get_contents() 函数、empty()函数、isset函数、PHP伪协议原创 2023-04-16 00:48:41 · 3562 阅读 · 0 评论 -
ics-05(命令执行漏洞及伪协议读取)
攻防世界ics-05、web、命令执行漏洞、PHP伪协议读取源码、bp的使用、base64原创 2023-04-13 19:39:10 · 701 阅读 · 1 评论 -
攻防世界-web2(逆向加密算法)
PHP常用内置函数,逆向加密算法,代码审计,脚本编写strrev(string);strlen(string):;substr(string,start,length);string;start;length;ord(string);chr();str_rot13(string);base64;原创 2023-04-10 23:28:39 · 914 阅读 · 0 评论 -
反序列化漏洞及PHP魔法函数
1、漏洞原理2、序列化(以PHP语言为例)3、反序列化4、PHP魔法函数(1)__wakeup()(2)__destruct()(3)__construct()(4)__toString()(5)__get()(6)__call()原创 2023-04-11 19:32:25 · 1509 阅读 · 1 评论