1. 程式人生 > 其它 >Django Stark元件開發文件

Django Stark元件開發文件

[網鼎杯 2018]Fakebook

知識點

  • sql注入

  • 測sql注入漏洞的步驟(自己總結一下)

    先搞清楚是哪個語句,select還是update還是其他

    然後搞清楚是字元型還是數字型(用來閉合語句)

    然後測一下是否能執行,用sleep(3), and 1=2 等等

    然後欄位數 order by

    之後....

  • 反序列化

  • SSRF內網滲透

題解

  • 其實,最怕這種題,因為經驗不足,看到這個不知道是什麼漏洞,往往瞎摸半天才能知道。

  • 這道題大一琢磨就知道是sql注入了,但有些題真的是( sql嗎? 一看wp,md,沒見過的漏洞)

  • 開啟網站,看見沒有賬號,就註冊一個。登入成功,看到url變成view.php?no=1

    這個no=1是id嗎?改成2看看

    因為這個網站只有一個賬號,而沒有第二個,所以極有可能是sql查詢語句沒有查詢到值。

  • 或者直接寫成no=1' 然後報錯,就知道這是sql查詢語句了。

  • 簡單測試,猜測查詢語句應該是

    select * from 表名 where id = $no

  • 測得欄位數是 4

  • 注入view.php?no=2 union select 1,2,3,4%23 發現有過濾

  • 測一下過濾了什麼。發現過濾了union

  • 看了wp發現 還有一個資訊洩露(網站原始碼備份檔案)但是,這個原始碼沒用啊。寫union報錯,寫select報錯,說明沒有過濾掉這兩個關鍵字,但連起來就有waf,也不知道這個waf怎麼寫的?

  • 在waf裡面加一個view.php?no=2 union/**/select 1,2,3,4%23就行了,回顯第二位,開始注表名,資料庫,等等

  • 資料庫 fakebook 表名 users 欄位名no,username,passwd,data,USER,CURRENT_CONNECTIONS,TOTAL_CONNECTIONS

  • 一個一個看欄位名,發現passwd是對密碼進行了md5加密,data是一個序列化

  • 仔細研究

    O:8:"UserInfo":3:{s:4:"name";s:5:"admin";s:3:"age";i:18;s:4:"blog";s:12:"www.blog.com";}

    現在才發現那個洩露原始碼的意義了,也明白了上面的報錯,只有username是通過sql查詢來回顯的,其他的都是通過反序列化,物件裡面查詢到的

  • 思路:聯合查詢注入一個構造的序列。讓原始碼進行反序列化,然後通過curl(),用file://協議來看flag.php原始碼(絕對路徑報錯已經給了)

  • 還有一個問題,不知道寫的sql語句那個是data欄位。不過可以一個一個試,或者直接猜測試第四個欄位

    view.php?no=2 union/**/select 1,(select data from users),3,'O:8:"UserInfo":3:{s:4:"name";s:5:"admin";s:3:"age";i:18;s:4:"blog";s:29:"file:///var/www/html/flag.php";}'%23