1. 程式人生 > >Bugku-web題wp (持續更新)

Bugku-web題wp (持續更新)

分享一下本人做題記錄,不足之處多多指正。

Sql注入1:

看程式碼一個迴圈把select,from,where都給過濾了…要查肯定要用這些語句啊,對怎麼繞過毫無思路,只好去網上查,才知道底下xss不是白給的,在關鍵詞中間加html的標記<>,xss的時候再還原回去(知道了一個新套路…)

要求查詢key表id=1的hash欄位,所以提交?id=1 un<br>ion sel<br>ect1,hash fro<br>m key where id=1%23 ,發現啥都沒有,可能又是這個key表作祟,這個表名正好是key就容易出問題,和昨天的題一樣key用``包裹一下,重新提交:

?id=1 un<br>ion sel<br>ect1,hash fro<br>m `key` where id=1%23

得到了key:

 

你必須讓他停下:

開啟連結發現一直在重新整理介面,提示讓它停下來,看原始碼有個間隔多少毫秒就重新整理介面的語句,也沒法停止,直接上burp抓包,抓包發到repeater,go一下沒有flag,再go幾下就出來了…(也不知道是什麼原理)

本地包含:

看程式碼有個flag.php,既然本地包含那flag肯定在這個php檔案裡,要檢視檔案內容百度了一下有個file_get_contents函式,這裡接受表單提交的hello值,還有個eval,所以就把hello賦值成檢視檔案的命令,var_dump()列印。

提交?hello=file_get_contents(%27flag.php%27),發現顯示了個string(84),flag呢… 一查原來file_get_contents把檔案內容放進了一個字串,檢視一下原始碼就找到了flag:

 

變數1:

提示flag在變數裡,看程式碼是接受表單的args變數,有這樣一行程式碼:

eval("var_dump($$args);");

把args的值解釋成變數名列印,猜想應該通過這個打印出flag,也不知道什麼變數啊,百度一下php內建變數,發現了這個:

直接提交?args=GLOBALS,就得到了flag:

 

秋名山老司機:

打開發現讓計算一大長串式子值2s內提交,毫無疑問肯定是寫指令碼解決的不可能手算再提交,寫段python指令碼(網路安全實驗室做過類似題,指令碼中用正則提取算術表示式還有點糊塗,照著改了改…)其中那個post提交,把結果賦給value這個變數提交,value這個詞我試了好久…

執行結果:(原來你也是老司機…)

Web4:

提示檢視原始碼,看原始碼發現了一串%+數字的編碼,看到有個unescape方法,去查了一下是一種編碼,線上翻譯,得到結果如下:

輸入password提交,不可以,輸入‘’‘’裡一長串字元,就得到了flag:

Web5:

檢視原始碼發現和上題類似只不過這次的編碼很噁心,查了半天也沒找到解碼的工具,百度看到別的wp上寫著直接放到chrome的console…得到了flag:

 

flag在index裡:

提示flag在index.php裡,但是原始碼都沒有index.php的影子,看原始碼有file=show.php,應該是檔案包含漏洞,用filter那個,得到base64編碼的字元:

解碼就得到了flag。

請輸入密碼:

讓輸入五位數密碼,直接burp爆破,得到flag:

 

前女友:

開啟連結,發現是個找程式碼漏洞的,要求提交的v1和v2不同但判斷md5編碼後的相同,查了一下是QNKCDZO和240610708,v3必須經過strcmp判斷和flag相同,利用strcmp陣列和字串判斷總是相等的漏洞,提交?v1=240610708&v2=QNKCDZO&v3[]=1,得到flag:

Javascript:

看介面是要點選1000000次,看程式碼裡面clicks>=1000000時通過post提交一個表單,內容為clicks=***,所以直接post提交就可以了,利用火狐hackbar,得到flag:

 

聽說備份是個好習慣:

開啟解題連結發現就是一長串字元,什麼都沒有,沒有什麼思路,這題只好貼到百度查的…wp上寫著用王一航大佬的指令碼爆得獲得原始碼的地址:

去這個地址下載原始碼,發現是類似上面題的漏洞,利用QNKCDZO和240610708,但是前面把key替換成了空,提交必須提交key1=QNKCDZO&key2=240610708,可以使用kkeyey這種方法,提交?kkeyey1=QNKCDZO&kkeyey2=240610708得到flag:

成績單:

看到這個題肯定是注入型別的,用’驗證果然是,然後開始老步驟,查所有資料庫的名字:(測試出select後欄位數是4)

payload:' union select  1,1,1,schema_name frominformation_schema.schemata#

發現給了一行information_schema,啥用也沒有,應該是隻能顯示一行內容,困在這裡只好去看wp,發現wp用了select 1,1,1,database()#就把需要的資料庫名字查了出來,資料庫名字是skctf_flag(不懂為啥),然後接著查表:

      Payload:union select 1,table_name,1,1 from information_schema.tables wheretable_schema='skctf_flag' #

查到表是fl4g,去查列:

      Payload:'unionselect 1,column_name,1,1 from information_schema.columns wheretable_schema='skctf_flag' and table_name='fl4g'#

查到skctf_flag列,然後去直接去查flag:

                Payload:'union select1,1,1,skctf_flag from fl4g#

查到flag:

Web6:

提示快點,應該是需要抓包獲取資訊,抓到包發到repeater發現了一個flag:後面跟一串字元,‘=’結尾考慮base64解碼,解碼後是:

跑的還不錯,給你flag吧: NjkwNjc2

這肯定不是flag… 再用base64解碼,是690676,然後這應該不能再解碼了,原始碼說讓把你發現的margin用post提交,用hackbar提交,然而還是提示再快… 抓了好幾個包,發現包裡flag:後的內容是不一樣的,所以還要寫指令碼來重複上述過程,得到flag:

 

Cookie欺騙:

點開連結發現自動提交了表單,filename=一個base64編碼的檔名字,line應該是第幾行的意思,所以要獲得index.php的程式碼才能做題,用指令碼一行一行獲得index.php的程式碼:

執行結果:

然後閱讀程式碼發現必須輸出keys.php檔案內容才能得到key,而就需要一個margin=‘margin’的cookie,所以去抓包改一下(把檔名改成key.php對應的base64編碼):

Xss測試:

Xss還沒有學… 所以先去看了看xss的基礎知識,然後做題,照貓畫虎構造一個js指令碼,因為要含這個alert(_key_),所以就構造id=<script>alert(_key_);</script>,然後發現沒什麼卵用,把我這程式碼沒有執行而是當字串在網頁打了出來,看原始碼好像被轉義了,然後就不會了,只好去百度,wp上寫著要用js對尖括號轉義方式進行轉義,所以照著試了試得到了flag: