1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Chap5. cpaw Level3前編

Posted at

はじめに

CTF学習のため、cpawというサイトの問題を解いていく記事です。
今回はLevel3前編(2問しかありませんが...)解いていきます。

この記事の対象者

  • CTF超初心者
  • cpawの問題を解いてみたい人

問題一覧


Q24. [Web] Baby's SQLi Stage 2

SQL文書く問題
Level2前半で解いた Q22.[Web] Baby's SQLi Stage 1の続編です。
Stage1を解いた際に出てきたnext stage urlからStage2を始められます!
この問題ではSQLインジェクションの常套手段的なものを使うようです。

SQLインジェクション:不正なSQLでデータベースに意図しない操作をさせる攻撃

【 考え方 】
パスワードがわからなくてもSQLが通るなら、php側に"パスワードは正しい"と
解釈させれば良いので、どうやっても値が「真」になるSQLを入力してやりましょう。

SQL大ヒント

使いそうなものたち

  • ':ここから始まると入力文字がSQLとして解釈される
  • OR AND: 条件式を与える
  • ' '=' ':' 'の中に何かを入れて常に成り立つ等式を作る
  • --:残りのSQLを無効化して構文エラーを防ぐ

これらをいい感じに組み合わせればSQLインジェクション体験ができます!

flag見つけるSQL文
SQL
' OR '1'='1'--

これを入力することで、常に値が真になり、
パスワードなしでもログインできてしまいます!
ちなみに'1'='1'ではなく'a'='a'などでも問題ありません。
入力できるとぱろっく先生を捕獲でき、感謝状とともにflagをもらえました!

flag
cpaw{p@ll0c_1n_j@1l3:)}

Q26. [PPC] Remainder theorem

合同式を解く問題
合同式を解いて解を求めましょう!
ソースコードにはPythonとCの2パターンのプログラムを記載しておきます。

x ≡ 32134 (mod 1584891)
x ≡ 193127 (mod 3438478)

x = ?
求めるソースコードと解説

i×a+b≡c(mod m)における最小の解を探索します。

  • a = 1584891
  • b = 32134
  • c = 193127
  • m = 3438478

最終的にx=i⋅a+bを求めていきましょう。

q26.py
i = 0
while True:
    i = i + 1
    x = i * 1584891 + 32134;
    if x % 3438478 == 193127:
      print(x);
      break;

C言語の方は、数値が大きいので
long long型という64ビット格納できる型を使用します

q26.c
#include <stdio.h>
int main(){
  long long x = 0;
  for(long long i=0; ; i++){
    x = i * 1584891 + 32134;
    if(x % 3438478 == 193127){
      printf("%lld", x);
      break;
    }
  }
  return 0;
}

ここで出力された値がflagです。

flag
cpaw{35430270439}

おわりに

第5回目はLevel3の2問について解説しました。
個人的にはSQLインジェクションの問題がとても面白くて好きでした。
次回がcpaw攻略最終回になると思います!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?