※ 주의 : 보안 관련 학습은 자유이지만, 학습 내용을 사용한 경우 법적 책임은 행위자에게 있습니다.
(Note: Security-related learning is allowed, but the individual is solely responsible for any legal consequences arising from the use of the acquired knowledge.)
※ CTF - Capture The Flag
※ 문제 푸는 방법이 다양할 수도 있습니다.
→ BurpSutie로 살펴본 결과 // [ Segfault CTF - (8주 차) SQL Injection Point 1 ] 참조
→ 3군데 SQLi point가 있었다.
→ 셋 다 SQL Injection 1에서 다루었고,
→ 갑자기 다시 생긴 ① 쿠키 ID 부분을 살펴보겠다.
→ t1234' and true #
→ t1234' and false #
→ 두 공격의 차이가 없었다.(실패)
→ Error를 유도해 본다.
→ 에러가 떴다. 내용을 보여주는 에러는 아니고 그냥 에러만 알려 줬다.
→ 우리가 필요한 것은 구문을 넣고 구문 조건에 따라 에러 결과가 바뀌어야 한다.
→ t1234' and (select 1 union select 2 where (1=1))#을 넣어본다.
→ t1234' and (select 1 union select 2 where (1=2))#을 넣어본다.
→ 참고로 SELECT 1 UNION SELECT 2 WHERE (1=1)이 이해가 안 된다면,
→ 아래 쿼리결과를 보면 된다.
→ 2 row가 반환되는 상황에서는 에러가 발생하므로
→ t1234' and (select 1 union select 2 where (SQL문))# 해서 에러가 발생하면, SQL문은 '참'이다.
→ 혹시 WHERE 절에 1=1, true를 넣어도 되는 것 맞냐는 의문이 들면,
→ 예전 CTF문제, 로그인 Bypass에서 ID에 doldol' or '1'='1을 넣은 것과 같은 원리이다.
→ t1234' and (select 1 union select 2 where (database()='sqli_9'))#를 넣어본다.
→ 반대의 경우도 한 번 확인해 본다.
→ t1234' and (select 1 union select 2 where (database()='sqli_999'))#를 넣어본다.
→ 모든 것이 확실해졌으므로, Blind SQLi를 시도해 본다.
→ 이하 공격 방법은 많이 했으므로 [ Segfault CTF - (8주 차) SQL Injection Point 1 ] 참조하면 된다.
→ Table은 board, flagHere, member 이렇게 3개가 있었고
→ flagHere의 컬럼은 idx, flag가 있었다.
→ flag 속성의 값은 segfault{플래그} 1개가 있었다.
Segfault CTF - (10주 차) XSS 2 (2) | 2024.06.25 |
---|---|
Segfault CTF - (10주 차) XSS 1 (1) | 2024.06.23 |
Segfault CTF - (8주 차) SQL Injection Point 3 (3) | 2024.06.12 |
Segfault CTF - (8주 차) SQL Injection Point 2 (0) | 2024.06.12 |
Segfault CTF - (8주 차) SQL Injection Point 1 (1) | 2024.06.12 |