
CTF
文章平均质量分 67
疯狂小伟哥
这个作者很懒,什么都没留下…
展开
-
PHP-回溯
如果回溯次数超过了 100 万,preg_match 将不再返回非 1 和 0,而是 false。PHP为了防止正则表达式的拒绝服务攻击(回溯次数过多),限制了回溯的次数。那么此题的答案就呼之欲出了,发送超长字符串的方式,使正则执行失败,最后绕过目标对PHP语言的限制。php的PCRE库使用的就是NFA的正则引擎,就会涉及到回溯的一个过程。当回溯的次数超过这个限制的时候,会返回一个false (匹配成功返回1,匹配失败返回的是0)后不能添加( `;可以匹配任何字符,所以最终匹配到了输入串的结尾,也就是。原创 2025-02-06 17:12:03 · 537 阅读 · 0 评论 -
PHP-变量特性(练习)
然而$ctf_show已经进行赋值了,但是结合上一行代码中的,extract($_GET)可知可使用变量覆盖的方式重新赋值。然而,与上题不同此题目对$c进行了更多的过滤,包括flag,GLOBALS,echo,var_dump,print等字符串。$_POST[‘CTF_Sangfor.com’]*是否设置,并且不能设置$_GET[‘fl0g’]。$_POST[‘CTF_Sangfor.com’]*是否设置,并且不能设置$_GET[‘fl0g’]。,所以只需要关注$c和if判断的两个POST方法即可。原创 2025-02-06 17:11:37 · 897 阅读 · 0 评论 -
PHP-综合3
若想使v4为真,v2传的参数要为数字或者数字字符串,同时v2也是我们要写入的webshell为了让v2为数字或者数字字符串,我们可以先把我们的webshell转换为base64编码,再把base64编码转换为16进制,这是一种办法去转换成数字。从前面的学习可知intval函数是取整函数,intval()函数会将非数字或非数字字符串转换为0,也就是我们传入的f1和f2互相构造即可,我们可以构造一个md5,这样intval就会返回0。首先PHP弱比较中字符串和数字比较时,字符串会先进行类型转换,转换为’0’。原创 2025-02-06 17:11:09 · 755 阅读 · 0 评论 -
PHP-三目运算(练习1)
然后将$d和$c[0]进行拼接,然后通过eregi()来做正则匹配,若出现“3”、“1”、“c”则匹配成功直接die,最后进行两个拼接后字符串的查找,利用eregi()函数的的%00截断漏洞即可绕过。分析代码逻辑,可以看出foo是一个json对象,经过json_decode()函数解析之后,变量bar1不能为数字,但又要大于2016。变量bar2,首先判断$a[“bar2”]是否是一个数组,长度是否为5,数组中第一个元素是否又为数组,令bar2为[[0],0,1,2,3]即可。再回到题目代码,进行分析。原创 2025-02-06 17:10:42 · 490 阅读 · 0 评论 -
PHP-运算符
分析代码逻辑,首先在第一个if条件判断当中有三个参数username,password,code。在第二个if判断中出现了运算符的比较。看似条件苛刻,$code需要等于一个随机值,并且$password需要等于$flag。这都是未知的变量,无法获取。docker-compose.yml文件或者docker tar原始文件。满足第二个if条件即可,payload为。但是在PHP中运算符的优先级。原创 2025-02-06 17:10:10 · 366 阅读 · 0 评论 -
PHP-trim
is_numeric函数来判断用户输入是否为数字,并且if条件里规定trim($num)移除字符串两侧的字符不能等于36,但后面的if需要等于36才能输出flag。分析代码逻辑,使用了自定义函数filter()对$num进行过滤,将0x,0,e等字符替换为了1。这意味着将无法使用16进制,8进制等方法进行绕过。docker-compose.yml文件或者docker tar原始文件。分页符可以利用,不会被trim过滤掉,所以payload为。此时可以编写脚本查看哪些字符可以使用。原创 2025-02-06 17:09:37 · 279 阅读 · 0 评论 -
代码执行-base64
docker-compose.yml文件或者docker tar原始文件。原创 2024-04-16 20:40:57 · 393 阅读 · 0 评论 -
no_good_file(训练题)
因为没有过滤.号,可以通过命令拼接构造…命令不断返回上一层,到达"/"目录,执行cat flag。docker-compose.yml文件或者docker tar原始文件。代码较长,主要分析核心代码;原创 2024-04-16 20:40:32 · 397 阅读 · 0 评论 -
NoNumberFile(环境变量利用)
其他大多数绕过方式我们已经接触过了,例如本题目禁用得空格符号,我们可以使用$IFS$9、${IFS}、>等进行绕过;从图中可以看出,${PWD:0:1}类似sql语句中mid,substr等截断函数,”0“表示截取位置为第一个字符,”1“表示截取长度为1;使用通配符匹配/bin/bzip2,使用/?匹配/var/www/html/flag.php文件。使用Linux通配符,匹配bz2命令压缩flag.php文件,然后通过浏览器下载bz2文件;代码较长,主要分析核心代码;,下载php.bz2压缩包;原创 2024-04-16 20:39:10 · 430 阅读 · 0 评论 -
有回显代码执行-分号和下划线绕过
由于过滤了下划线“_”无法使用,同时也过滤了分号‘“’;但可以使用php语言中,if(){}或者while{}语句绕过分号限制;docker-compose.yml文件或者docker tar原始文件。docker-compose.yml文件或者docker tar原始文件。空格可以使用%09绕过,flag以及点好”.“可以使用星号”*“绕过;2、使用dirsearch扫描网站目录。2、使用dirsearch扫描网站目录。未找到flag.php文件;最后分号满足php代码格式;flag.php文件存在。原创 2024-04-16 20:37:57 · 534 阅读 · 0 评论 -
有回显命令执行-命令拼接+关键字绕过
docker-compose.yml文件或者docker tar原始文件。docker-compose.yml文件或者docker tar原始文件。在linux shell中命令执行绕过关键字中,读取文件可以使用一下字符;主要过滤字符flag、cat、tac关键字,以及*,?原创 2024-04-16 20:36:07 · 654 阅读 · 0 评论 -
no_good_file(训练题)
其他大多数绕过方式我们已经接触过了,例如本题目禁用得空格符号,我们可以使用$IFS$9、${IFS}、>等进行绕过;从图中可以看出,${PWD:0:1}类似sql语句中mid,substr等截断函数,”0“表示截取位置为第一个字符,”1“表示截取长度为1;因为没有过滤.号,可以通过命令拼接构造…命令不断返回上一层,到达"/"目录,执行cat flag。docker-compose.yml文件或者docker tar原始文件。代码较长,主要分析核心代码;代码较长,主要分析核心代码;$PWD 是个系统变量。原创 2024-04-16 20:35:38 · 292 阅读 · 0 评论 -
SSRF题目进阶+SSRF正则绕过+进制绕过SSRF限制
11、根据上述结果显示,可以初步判断,允许使用http或者https协议,但是不允许使用localhost,尝试使用127.0.0.1访问。6、根据返回结果可以判断出,当在输入框内输入网站地址,服务端会尝试访问该地址,并返回响应内容。6、返回结果为html实体编码,将返回结果复制,并保存在.html后缀的文件当中。10、访问/upload/123xxx.php,phpinfo函数已执行。3、扫描到文件flag.php,访问flag.php文件。3、扫描到文件flag.php,访问flag.php文件。原创 2024-04-16 20:34:26 · 800 阅读 · 0 评论