Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
owaspkyushulocalchaptermeeting7th
Search
nwiizo
July 28, 2016
71
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
owaspkyushulocalchaptermeeting7th
nwiizo
July 28, 2016
More Decks by nwiizo
See All by nwiizo
型は壁、Rustでもバグを直すな、表現できなくせよ
nwiizo
14
2.1k
システムは「動く」だけでは足りない 実装編 - 非機能要件・分散システム・トレードオフをコードで見る
nwiizo
4
640
システムは「動く」だけでは 足りない - 非機能要件・分散システム・トレードオフの基礎
nwiizo
32
12k
アーキテクチャモダナイゼーションとは何か
nwiizo
19
7.2k
【社内勉強会】新年度からコーディングエージェントを使いこなす - 構造と制約で引き出すClaude Codeの実践知
nwiizo
39
23k
技術的負債の泥沼から組織を救う3つの転換点
nwiizo
9
7.7k
30分でわかるアーキテクチャモダナイゼーション
nwiizo
12
9.2k
意志を実装するアーキテクチャモダナイゼーション
nwiizo
3
5.1k
おい、テックブログを書け
nwiizo
48
21k
Featured
See All Featured
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.1k
The Spectacular Lies of Maps
axbom
PRO
1
860
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
390
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
1.1k
Reality Check: Gamification 10 Years Later
codingconduct
0
2.2k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
870
Art, The Web, and Tiny UX
lynnandtonic
304
22k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
120k
Designing for Timeless Needs
cassininazir
1
360
Typedesign – Prime Four
hannesfritz
42
3.1k
Google's AI Overviews - The New Search
badams
0
1.1k
Transcript
OWASP Kyushu Local Chapter Meeting 7th Depressed One Step Web
scraping 2016年12月14日 @nwiizo
アジェンダ • はじめに • OWASP BWAとは • 情報を取得してみよう • 自動ログインしてみよう
• ログイン後ページでの情報を取得してみよう • レスポンスヘッダーのチェック • まとめ
はじめに • Python3を使ってハンズオン 自動ログインツールの生成 簡易診断ツールの作成 • くれぐれも自分の管理下以外のサーバには 行わないように • 猛者が暇しない為の問題も用意しています
OWASP BWAとは • OWASP Broken Web Applocations Project • 意図して脆弱なアプリケーションを集めた仮
想マシンを提供しているプロジェクト • 今回は、ここにあるWebアプリを対象に使う
実行環境(Python3) • 2020年に公式のPython2の開発/保守が終了 します。 Python3 でやるより2の方が幸せ になれることが多いけどな!!
Python3に対する勘違い • モジュールが対応していない。 • 文字や数字の振る舞いが違いすぎない?? • そもそもいろんな挙動が違いすぎる。 Python3でも相当するモジュールは存在する場合が多い 申し訳ありません。 ごめんなさい
OWASP BWAの起動 • ダウンロードしたovaをVirtualboxで起動 • 仮想ネットワークの設定でネットワークを「ホ ストオンリーアダプター」に変更しておく(外部 に公開ぜず設定自分だけ見れるという)
ブラウザでアクセス • http://[イメージのIPアドレス]/WackoPickoにア クセス • WackoPicko 脆弱性のあるWebサイト 画像の共有 画像の売買 etc
タイトルの取得 • 任意のWebページのタイトルを取得するプロ グラムの作成 • WackoPickoのタイトルを取得して標準出力に 出力してください
使用するライブラリ • HTMLの取得のために urllibを使用する。 • HTMLを解析するために BeautifulSoupを使用する。
get_header.py import urllib from bs4 import BeautifulSoup url = "http://192.168.16.128/WackoPicko/"
page = urllib.request.urlopen(url).read() page_title = BeautifulSoup(page,"html.parser") print(**********.title.string)
任意の情報の取得 • Titleの情報をとってくるスクリプトを書きました。 • 今回は、そのページにあるリンクを集めるス クリプトを作ってみましょう !!
get_href.py url = "http://192.168.16.128/WackoPicko/" page = urllib.request.urlopen(url) s_p = page.read()
s = BeautifulSoup(s_p,"html.parser") a_list = s.findAll(“*") for a in a_list: print (a.get(“****"))
[追加]入力フォームの探索 • Titleもaタグの情報も集めることができました。 • 次にログインフォームの入力にどのようなも のがあるのか探索してみましょう
[追加]get_input.py url = "http://192.168.16.128/WackoPicko/users/login.php" page = urllib.request.urlopen(url) s_p = page.read()
s = BeautifulSoup(s_p,"html.parser") for form in s.findAll(“*****"): print(form.get(“****"))
自動ログインの実装 • 入力すべき値はすべてわかっている前提で の自動ログインを行う HTMLを解析し て必要な情報 を取得 取得したデータ を元にログイン ページにログイ
ン情報を送信 ログイン成功
IDとパスワード • 最初のページ http://[IP_address]/ の WackoPickoのブックマークをクリック • ログイン情報などが記載されています。 はい、便利
HTMLの解析(手動) http://[ip_address]/WackoPicko/users/login.php <h2>Login</h2> <table style="width:320px" cellspacing="0"> <form action="/WackoPicko/users/login.php" method="POST"> <tr><td>Username
:</td><td> <input type="text" name="username" /></td></tr> <tr><td>Password :</td><td> <input type="password" name="password" /></td></tr> <tr><td><input type="submit" value="login" /></td><td> <a href="/WackoPicko/users/register.php">Register</a></td></tr> 送信先 ユーザー名 パスワード
使用するライブラリ • POSTリクエストを送信するためにrequestsを 使う • pip3 install requests
Auto_login.py import requests payload = {"username":"scanner1","password":"scanner1"} r = requests.post("http://192.168.16.128/WackoPicko/users/login.php") print(r.text)
課題1 • BeautifulSoupなどを使ってログインできたか を確認しましょう
課題2 • ユーザを変えるたびにソースコードの変更を 行うのは手間 • 実行時のコマンドライン引数にログイン情報 を入力できるようにしましょう
まとめ • Python3を使って特定の情報の取得、ログイ ンの自動化などWebスクレイピングの入門を 行いました。 • 各種モジュールにはもっと便利な機能があり 自分でカスタマイズしていきましょう。 • くれぐれも管理していないWebサイトに行わな
い事。
謝辞 • 発表の機会を下さった。OWASP Kyushu Chapter Leader 服部さんには深く感謝申し上げたいと思 います。 • 無粋な学生に快く会場を貸してくださった
BETASOFT 竹田様。会場の設定が何度も間違っ ていてすみません。心より御礼申し上げます。 • このスライドの多くは実習の時間を使って作成し ました。共同実習者の水田くんには大変、迷惑 をかけました。