1. 程式人生 > >2017強網杯 web 解題思路總結

2017強網杯 web 解題思路總結

寫這篇部落格的主要動機就是一邊總結,一邊學習,就當做是一篇學習筆記。

首先開啟題目連線,出現下圖所示,發現並沒有什麼有用的資訊
這裡寫圖片描述
檢視原始碼,還是沒找到有用的資訊

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
Sorry. You have no permissions.</body>
</html>

1.初步思考
沒有提示,也沒有連線,那麼可能有以下幾種可能:
1.1 敏感檔案洩露;(目錄掃描)
1.2 跳轉;(抓包)
1.3 cookie / session。(檢視cookie)
2.cookie中的role
這裡寫圖片描述


Zjo1OiJ0aHJmZyI7base64解碼得到:f:5:"thrfg";,將thrfgrot13解密後得到guest

於是改為admin逆過去,adminrot13轉換得到nqzva,再將f:5:"nqzva";base64編碼得到Zjo1OiJucXp2YSI7

修改cookie的值提交到伺服器,得到如下回應
這裡寫圖片描述

檢視原始碼,發現線索$filename = $_POST['filename']; $data = $_POST['data'];可以看到這是一個POST檔案上傳的操作,

<!DOCTYPE html>
<html>
<head>
<title></title> </head> <body> <!-- $filename = $_POST['filename']; $data = $_POST['data']; -->Hello admin, now you can upload something you are easy to forget.</body> </html>

接下來,順著提示,藉助於瀏覽器器外掛hackbar,將filename=hh.php&data=<?php phpinfo(); ?>POST出去,得到No No No!


這裡寫圖片描述

檢視原始碼,沒啥有用的資訊

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
No No No!

猜測程式碼中有一個用來匹配的正則表示式
寫入檔案除了fopen fwrite fclose 還有一種file_put_contents 這個允許data是陣列 (不能是多維陣列);

所以改為:

filename=hh.php&data=[]<?php phpinfo(); ?>

再次POST,
這裡寫圖片描述
得到了一個地址./uploads/d8bc6a3fb97ef6d2aec73924ea7c9409hh.php,訪問該地址
拿到flag
這裡寫圖片描述