bugku login2 writeup 不使用vps的方法

0x00前言php

  這個題是sql注入與命令執行相結合的一個題,思路有兩個:html

  1、:sql注入登陸web系統,命令執行反彈公網IP監聽端口(須要vps),此種方法詳見連接:http://www.bugku.com/thread-80-1-1.htmlweb

  通常人沒有vps,所以這種方法比較小衆,我作的時候卡在這兒沒辦法,甚至一度買了體驗版vps,後來作夢夢到了第二種思路sql

 

0x01正文shell

  首先咱們拿到題目http://118.89.219.210:49165/login.php,頁面什麼也沒有,目錄掃描了也沒有東西,看來是要注入登陸,通常注入都會用burp->repeater測試,比較方便,這就看到服務器的返回報文有一段base64解密的字符串數據庫

  

  JHNxbD0iU0VMRUNUIHVzZXJuYW1lLHBhc3N3b3JkIEZST00gYWRtaW4gV0hFUkUgdXNlcm5hbWU9JyIuJHVzZXJuYW1lLiInIjsKaWYgKCFlbXB0eSgkcm93KSAmJiAkcm93WydwYXNzd29yZCddPT09bWQ1KCRwYXNzd29yZCkpewp9bash

  解碼以後發現是登陸頁面的一小段源碼,經過分析源碼中數據庫的處理流程發現能夠經過輸入不存在用戶,用union select 構造出指定密碼的md5值,從而登陸成功,payload大概就是這樣username=adminawevcq3vq3rv' union select 1,'25d55ad283aa400af464c76d713c07ad'%23&password=12345678服務器

  至此,第一步就完成了,此時進入進程監控系統:測試

   

  這裏就沒有任何提示信息了,在輸入框輸入如下字符串實驗:spa

    123

    123;ls

    123;cat index.php

  發現除了進程信息以外其餘的都沒有回顯,不知道是否是有過濾,又更換命令的分解符號爲|,&,&&均沒有反應,這樣存在兩種可能,命令執行了,輸出過濾了,或者是命令被過濾了。

  基於盲注原理測試123;sleep 5發現返回延遲將近5秒,看來是輸出過濾,命令能夠執行,若是其餘的shell命令沒有被過濾,那麼此處就至關於getshell,能夠執行更多操做;

  咱們須要回顯,不考慮反向連接的狀況,借鑑sql盲注的原理,進行基於時間的命令行盲注,採用bash命令,經過對比字符串中一個一個的字符與頁面延遲來肯定咱們須要的內容,關鍵的注入語句:c=123;a=`ls`;b='a';if [ ${a:0:1} == $b ];then sleep 2;fi

  註釋:若是ls結果中的第一個字符爲a,頁面返回延遲兩秒,利用這個思路,首先肯定當面目錄#ls的文件狀況以下(這是我猜解一半的截圖,腳本運行完天然就有了整個目錄結構,存放flag的文件名是fLag_********.txt):

      

  而後進一步cat flag******.txt來獲取最終的flag,放上猜解flag文件內容一半的截圖:

      

 

 

0x02結語

  這個方法應該對每一個人都適用,不會出現硬件障礙。我是個懶人,沒有排版,你們看着不清楚的請留言哈哈!!!

相關文章
相關標籤/搜索