はまやんはまやんはまやん

hamayanhamayan's blog

2020-02-09から1日間の記事一覧

Many Many Paths [AtCoder Beginner Contest 154 F]

https://atcoder.jp/contests/abc154/tasks/abc154_f 前提知識 2次元累積和の考え方 mod素数上での二項係数 解説 https://atcoder.jp/contests/abc154/submissions/10005470 問われているのは、ある矩形区間での総和であるが、変数が4つもあるのは扱いにくい…

Almost Everywhere Zero [AtCoder Beginner Contest 154 E]

https://atcoder.jp/contests/abc154/tasks/abc154_e 前提知識 [桁DP](https://www.hamayanhamayan.com/entry/2017/04/23/212728 解説 https://atcoder.jp/contests/abc154/submissions/10002125 数がとても大きい上に、個数計算とのことなので桁DPをしよう…

Dice in Line [AtCoder Beginner Contest 154 D]

https://atcoder.jp/contests/abc154/tasks/abc154_d 前提知識 期待値の線形性 解説 https://atcoder.jp/contests/abc154/submissions/10001499 期待値の線形性というのがある。 それぞれのサイコロは独立に期待値を考えることができるので、合計の期待値は…

Distinct or Not [AtCoder Beginner Contest 154 C]

https://atcoder.jp/contests/abc154/tasks/abc154_c 解説 https://atcoder.jp/contests/abc154/submissions/10000046 ある数列が全て異なる数であることを判別するには色々方法がある。 データ構造を使うやり方であれば、setを使うのがいいだろう。 setに全…

I miss you... [AtCoder Beginner Contest 154 B]

https://atcoder.jp/contests/abc154/tasks/abc154_b 解説 https://atcoder.jp/contests/abc154/submissions/9999489 Sの全ての文字をxに置き換えて出力するが、 言い換えると、Sの文字数分xを出力すればいい。 個数を数えて、その数だけxを出力しよう。 str…

Remaining Balls [AtCoder Beginner Contest 154 A]

https://atcoder.jp/contests/abc154/tasks/abc154_a 解説 https://atcoder.jp/contests/abc154/submissions/9999194 文章が等しいものがあれば個数を減らす必要があるので、 S=UであればA--、T=UであればB--をしてA,Bを答えよう。 string S, T; int A, B; s…

picoCTF2019 Web問題 全編解説

picoCTF2019 中高生向けの教育的コンテスト そのうちWeb関連の問題を全て解いて(最後の最後だけギブ…)解説をまとめた。 picoCTFサイトにもHintはあるし、以下の要求知識もHintにしながらまずは解いてみるといいと思う。 自分も勉強しながら解いた。全体的…

cereal hacker 2 [picoCTF 2019 Web 500]

https://ctftime.org/task/9491 前提知識 ディレクトリトラバーサル、LFI(:Local File Inclusion) Blind SQL Injection 解説 (実は最後まで解けてない) guest:guestは削除されている。 ディレクトリトラバーサルの出番。 その一部のLFIというタイプ。 Loca…

Empire3 [picoCTF 2019 Web 500]

https://ctftime.org/task/9490 前提知識 SQLi Flaskのセッション偽装 解説 今までの脆弱性は塞がれている。 Cookieにあるセッション情報を復元してみると、user_idが変更できそう。 ここに再署名のやり方が書いてある。 {{ config.items() }}とTODOに入れて…

cereal hacker 1 [picoCTF 2019 Web 450]

https://ctftime.org/task/9493 前提知識 SQLi 解説 guest:guestで実はログインできる。 クッキーに謎の文字列があるので、2回URLデコードをしてbase64decodeすると、それっぽいものが出てくる。 adminでログインしたいので、usernameをadminにして、base64e…

Java Script Kiddie 2 [picoCTF 2019 Web 450]

https://ctftime.org/task/9501 前提知識 javascript読解 バイナリに対する導入知識 解説 javascriptが変わっているが原理は同じなので読み直す function assemble_png(u_in){ var LEN = 16; var key = "00000000000000000000000000000000"; // 32桁になって…

Empire2 [picoCTF 2019 Web 400]

https://ctftime.org/task/9498 前提知識 Flask (SSTIの代表格?) SSTI: Server-Side Template Injection base64, url-encoding 解説 先程の脆弱性は修正されているようだ。 問題文にXX is passing secrets around when you log inと挑戦的なことが書いてあ…

Java Script Kiddie [picoCTF 2019 Web 400]

https://ctftime.org/task/9502 前提知識 バイナリデータに関する導入知識 解説 ソースをチラッと見ると、与えられたキーを元にバイト列を生成している。 形式はimage/pngになっているので、先頭がPNGのヘッダーとなるように調整すれば良さそう。 バイナリデ…

JaWT Scratchpad [picoCTF 2019 Web 400]

https://ctftime.org/task/9874 前提知識 JWT John The Ripper 解説 adminではもちろん入れない。 どこから攻めるかという感じだが、JWTがなんだか強調されているので、Cookieを見てみると、JWTが入ってる。 中をここで見てみると、HS256でハッシュ化されて…

Irish-Name-Repo 3 [picoCTF 2019 Web 400]

https://ctftime.org/task/9547 前提知識 SQLi(SQLインジェクション) 解説 こちらはパスワードしかない。 そう言えばhidden属性でdebug=0というのをPOSTで送っていたので、これを1にしてみると実行クエリが表示される。 試すと以下の通り。 <pre>password: fd SQL</pre>…

Empire1 [picoCTF 2019 Web 400]

https://ctftime.org/task/9499 前提知識 SQLi(SQLインジェクション) 解説 利用者登録をしてTODOリストを表示する問題。 既視感はある。 解いた事のある方針で考えると、うまいことやって自分のTODOリストに他の人のTODOを表示させる。 問題を起こさせること…

Irish-Name-Repo 2 [picoCTF 2019 Web 350]

https://ctftime.org/task/9546 前提知識 SQLインジェクション 解説 前の問題のペイロードを試すと、SQLinjectionが検知されてしまう。 メッセージで出している所を見ると、判定関数を噛ませてあるのだろう。 何で引っ掛けているか分からないが、判定関数を…

Irish-Name-Repo 1 [picoCTF 2019 Web 300]

https://ctftime.org/task/9545 前提知識 SQLインジェクション 解説 問題文にTry to see if you can login!とあるので、ログインを頑張る。 ログイン時のExploitといえばSQL Injectionなので、まずはそれをやってみる。 Supportページを見ると、'が含まれる…

picobrowser [picoCTF 2019 Web 200]

https://ctftime.org/task/9667 前提知識 User Agent偽装 解説 ウェブサイトがブラウザを判別する方法はUser Agentなので、 ここにpicobrowserを入れるとフラグが出てくる。 Chromeであれば標準のDeveloper Toolで偽装が可能。 (しかも簡単!)

Open-to-admins [picoCTF 2019 Web 200]

https://ctftime.org/task/9568 前提知識 Cookieの編集方法 解説 adminが要求されているが、何もできない雰囲気がある。 問題が以下になっている。 This secure website allows users to access the flag only if they are admin and if the time is exactly…

Client-side-again [picoCTF 2019 Web 200]

https://ctftime.org/task/9517 前提知識 javascriptの読解 解説 dont-use-client-sideと見た目が似ているので、とりあえずソースコードを見る。 同じような感じになっているが、ちょっと難読化されている。 名前変更の難読化だけなので、頑張って読み解くと…

where are the robots [picoCTF 2019 Web 100]

https://ctftime.org/task/10385 前提知識 robots.txt 解説 webでrobotsと言えば、クローラーであるので、その辺で考える。 robots.txtというファイルがあり、クローラーに対してある種の指示を行うことができる。 これがどっかにあるかなーと思い、 https:/…

logon [picoCTF 2019 Web 100]

https://ctftime.org/task/10384 前提知識 Cookieの確認方法 解説 ひらめき問題。 どうやってもログインできるっぽい。 No flag for youと出て特殊なログインをしなくてはいけないように『見える』 見えるが、クッキーを見てみると、adminキーの値がFalseに…

dont-use-client-side [picoCTF 2019 Web 100]

https://ctftime.org/task/9518 前提知識 javascriptの読解能力 解説 とりあえずソースコードを見てみると、判定用javascriptが直書きされている。 substringで判定している情報をうまいことまとめてみると分かる。 手動でこねこねするのは面倒だが、エディ…

Insp3ct0r [picoCTF 2019 Web]

https://ctftime.org/task/10383 前提知識 ソースコードの見方 解説 webサイトのソースコードを開くと、断片的にフラグがあるので、html,css,jsファイルから フラグを集めてくっつけると答え