ギークな思考

CTFのWiteUpを書きます。

SQLインジェクションの手順

SQLインジェクションができるかの確認

1. ' を入力してエラーが返ってくるか

2. ページをリロードした際にステータスコードが正しい入力のときは200、間違った入力のときは500になっている(開発者ツールのネットワークタブで確認)

3. 未知のSQL文が select * from users where id={$input}  などの数字を求めている場合

 1と2を入力するとステータスコードが200であることを確認し、1+2を入力したときにステータスコードが200で、1,2のときと違う出力がされている

4. 未知のSQL文が select * from users where name={$input} などの文字列を求めている場合、tana || ka と入力(MySQL以外で有効。MySQLでは or として動作)

5. sleep()を利用する。レスポンスが返ってくるまでの時間で判断

 select * from users where {$input} に対して ' union select sleep(10)

 

② 

Pythonで最大公約数と最小公倍数

最大公約数(gcd)

2つの値の最大公約数
import math

a, b = map(int, imput().split())
gcd = math.gcd(a,b)
複数の値の最大公約数
import math

n = list(map(int input().split()))
gcd = n[0]
for i in range(2,n+1):
     gcd = math.gcd(gcd,i)


最小公倍数(lcm)

2つの値の最小公倍数
import math

a, b = map(int, imput().split())
lcm = a*b // math.gcd(a,b)
複数の値の最小公倍数
import math

def LCM(a, b):
      return a*b // math.gcd(a,b)

n = list(map(int input().split()))
lcm = 1
for i in range(2,n+1):
     lcm = LCM(lcm, i)