[第五空间 2021]WebFTP
打开题目 发现是登录的界面 用admin和password试一下发现不行
用dirsearch扫一下
发现了git泄露 但是用githack下载不下来文件 去网上查了一下webftp 发现是一个在线php文件管理系统
WebFTP——在线FTP工具:强大的PHP在线文件管理系统-時日 在这篇博客中提到,引用一下
发现能直接登录phpinfo.php 拿到flag
[SWPUCTF 2021 新生赛]Do_you_know_http
页面显示 请使用browser浏览器
用bp抓包修改一下
User- Agent中文名为用户代理,是一种向访问网站提供你所使用的浏览器类型及版本、操作系统及版本、浏览器内核、等信息的标识
修改之后,发现页面显示成功 ,在Location里边有一个./a.php 访问一下
访问后显示:
用xff来伪造一下
得到flag
[SWPUCTF 2021 新生赛]ez_unserialize
没找到什么东西,而且还抓不到包,用dirsearch扫一下
打开看看这三个,在robots.txt找到了文件 打开看看
找到了源码 开始分析
解题
得到序列化
构造payload:p=
O:4:"wllm":2:{s:5:"admin";s:5:"admin";s:6:"passwd";s:3:"ctf";}
得到flag
[SWPUCTF 2021 新生赛]easyupload1.0
传php小马
传图片上去
发现成功
改文件类型试试
上传成功,连接蚁剑
得到flag发现这个是错的
不在www目录下 去phpinfo里边看看
果然找到了 flag
附上源码
[SWPUCTF 2021 新生赛]easyupload2.0
正常上传小马
上传一句话木马失败
上传照片试一试
上传照片成功,用bp抓包改一下类型看看
还是不行,把后缀改掉试试,上传phtml文件 发现成功
蚁剑链接
在 /var/www/html/flag.php
附源码
[SWPUCTF 2021 新生赛]no_wakeup
点击首页超链接,发现了反序列化,来解析
得到序列化 然后在传参进行反序列化得到flag
这里需要绕过__wakeup函数
O:6:"HaHaHa":2:{s:5:"admin";s:5:"admin";s:6:"passwd";s:4:"wllm";}
只要让他的类型>2就可以了 payload :
?p=O:6:"HaHaHa":3:{s:5:"admin";s:5:"admin";s:6:"passwd";s:4:"wllm";}
得到flag
[suctf 2019]EasySQL
尝试输入 1' and 1=1 发现不管是字符型还是数字型都显示nonon
输入1 显示
应该是堆叠注入
看一下数据库信息, 1;show databases;
找到了库 看表 1;show tables;
找到了字段
看到Flag表,猜测flag应该在Flag中。但是用1;show columns from Flag;无法回显出flag只会回显Nonono. -->说明flag被过滤掉了(注:1;show columns from用来查询表中列名称)
这里就涉及到了别的知识
这道题在最初测试的时候:非0数字回显1,0和字母不会回显任何内容
这里猜测后端语句,因为只有当我们输入非零数字时才会会显出1,而0和其他全都无回显,而猜测逻辑大致是这样的:大胆猜测后端(内部查询语句)语句中有||操作符,只有我们输入非零数字才会满足||的逻辑为True从而进行回显的条件。也就是满足:select 输入的内容 || 一个列名 from 表名。(select 输入数据 || flag from Flag)
mysql中||表示连接操作符,不表示或的逻辑。
既然我们要找到flag,后端又存在“或” 的逻辑,那么只需要把||或的逻辑改成连接符的作用就可以了
利用PIPES_AS_CONCAT令||起到连接符的作用。
注:这里的逻辑是先把||转换为连接操作符,注意分号隔断了前面的命令,所以要再次添加select来进行查询,这里把1换成其他非零数字也一样会回显flag
由此回显出flag
[SWPUCTF 2021 新生赛]PseudoProtocols
页面显示
发现有参数 试试用php伪协议读取一下
base64解码
还是用php伪协议读取
得到了一长串 解码发现了
file_get_contents() 把整个文件读入一个字符串中。
该函数是用于把文件的内容读入到一个字符串中的首选方法。如果服务器操作系统支持,还会使用内存映射技术来增强性能
这里要让需要让 $a 所表示的文件的内容存放I want flag,就需要用到另外一个伪协议 data协议,在我之前写的博客里边也有体现
因为原本的输入字符会被过滤,所以要用base64加密
构造的payload:
test2222222222222.php?a=data://text/plain;base64,SSB3YW50IGZsYWc=(因为前边有base64编码,所以后边数据要用base64的格式)
[NISACTF 2022]easyssrf
我的博客里有详细的介绍,在这里就不详细的介绍了
输入flag 反馈
说是ssrf 用file读取一下:
访问一下这个网页
他说flag在/flag里边 用file读取不了 直接用php伪协议读取
php://filter/read=convert.base64-encode/resource=/flag
解码得到flag NSSCTF{0202c5a3-75bf-4f0f-b315-0ddd83f691c7}
[ZJCTF 2019]NiZhuanSiWei
成功绕过得到base64 编码 进行解码
反序列化内容
$password = unserialize($password);
同样要注意这句话 ,传参用password
最后的payload:
?text=data://text/plain;base64,d2VsY29tZSB0byB0aGUgempjdGY=&file=useless.php&password=O:4:"Flag":1:{s:4:"file";s:8:"flag.php";}
到最后一步输入的时候发现绕不过去,但是每一部分的绕过的没有问题,最后发现是第二步的file=useless.php就可以了,如果用php伪协议就绕不过去,百思不得其解......
成功绕过
得到flag
NSSCTF{fda7d4be-2e43-48f8-9cff-ae56f975c077}