Web

[SQL Injection] Pentesterlab 문제 풀이1

대장흰둥 2022. 11. 2. 16:06

[Example 1]

1. 소스코드 확인

가장 간단하고 필터링이 없는 코드이다.

 

2. SQL Injection 페이로드 입력

' or '1=1-- 입력으로 공격에 성공하였다. 전체 테이블이 조회가 가능하다

 

[Example 2]

1. 소스코드 확인

공백을 필터링 한다

 

2. 필터링 우회 

공백 대신 %09(Tab 문자)를 사용한다.

→ '%09or%09'1=1—

 

[Example 3]

1. 소스코드 확인

정규표현식에 뭔가가 추가되었다 %09를 쓸 수 없다

 

2. 필터링 우회

%09 대신 /**/(주석) 을 사용한다.

→ '/**/or/**/'1=1—

 

[Example 4]

1. 소스코드 확인

mysql_real_escape_string 함수가 추가되었다.

 

2. mysql_real_escape_string

php에서 제공하는 함수로 mysql과 연동할때 String을 자동으로 Escape해 준다.

✅ Escape String = \n, \r처럼 싱글쿼터 앞에 \를 붙여서 구분해 준다.

 

3. 필터링 우회

Example4 부터 id 검색으로 바뀌고 싱글쿼터가 없어져서 닫아줄 필요가 없다.

→ 1 or 1=1—

 

[Example 5]

1. 소스코드 확인

 

2. 필터링 우회

→ 1 or 1=1—

 

[Example 6]

1. 소스코드 확인

이번에는 문자열의 끝이 숫자인지를 검사한다

생각해보니 뒤에 아무것도 없어서 주석처리를 해줄 필요도 없었다.

 

2. 필터링 우회

→ 1 or 1=1—

 

[Example 7]

1. 소스코드 확인

처음보는 정규 표현식인데 여러줄을 입력받아서 그 중에 한 줄만 숫자가 있으면 된다는 조건이다.

 

2. 필터링 우회

%0a (Url Encoding 개행)으로 우회해 준다.

→ 1%0aor%0a1=1

 

 

 

 

 

 

 

 

 

 

 

'Web' 카테고리의 다른 글

[SQL Injection] 종류 및 Prepared Statement  (0) 2022.11.01
[HTTPS 프로토콜] HSTS 헤더  (0) 2022.10.31