原理篇—sql注入5:pikachu靶機練習


數字型注入(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秒,失敗直接顯示

 

寬字節注入

形成原因:

  1. 數據庫編碼設置成GBk系列編碼
  2. 使用了轉義函數

原理:當MySQL在使用GBK編碼的時候,會認為兩個字符是一個繁體漢字,然后讓我們的單引號%27成功逃逸:

    

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM