[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 |