허용받지 않은 서비스 대상으로 해킹을 시도하는 행위는 범죄 행위입니다. 해킹을 시도할 때에 발생하는 법적인 책임은 그것을 행한 사용자에게 있다는 것을 명심하시기 바랍니다.
조금 더 구체적인 내용들은 [LOS] Lord of the SQL Injection - gremlin 문제를 풀면서 작성해 두었고, 빠진 부분이나 필요한 부분들에 대해서는 조금씩 추가하면서 작성하도록 하겠습니다.
Lord of the SQL Injection - wolfman
preg_match : porb _ . ( ) 필터링이 되어 있고 i 옵션을 통하여 대소문자를 구분하지 않음 pw='필터링값'이 있을 경우 "No Hack ~_~" 문구를 출력합니다.
preg_match : 공백문자가 필터링이 되어 있고 i 옵션을 통하여 대소문자를 구분하지 않음 pw='필터링값'이 있을 경우 "No whitespace ~_~" 문구를 출력합니다.
해당 문제는 쿼리를 이용하여 id값에 "admin"이 존재하는지 확인하면 간단히 풀리는 문제입니다. 하지만 기존 문제와는 다르게 공백문자를 필터링하고 있어 스페이스바를 입력할 경우 "No whitespace ~_~" 문구를 출력합니다.
SQL Injection 공격에서는 공백 문자를 우회하는 방법은 여러가지가 있습니다.
공백 문자를 우회할수 있는 ASCII 코드표
해당 문제는 bWAPP를 통하여 예시로 들어주는 부분과 ASCII코드표를 참조하여 직접 한번 풀어 보시기를 추천드립니다.
bWAPP의 DB를 통하여 먼저 설명을 드리도록 하겠습니다.
select login from users;
- bWAPP DB의 users 테이블의 login 컬럼을 출력하였습니다.
select login from users where login='bee' and password='' or login='test01';
- bWAPP DB의 users 테이블의 login 컬럼에서 login='bee'이고 password='' 이거나 login='test01'을 출력,
login='bee' and password='' 조건은 패스워드 값이 없기 때문에 그다음의 OR 조건을 통하여 'test01' 값을 출력하게 됩니다.
즉 위의 조건의 쿼리는 다름의 쿼리문과 같다고 생각하시면 됩니다. select login from users where login='test01';
저는 /**/ 주석 처리 부분을 이용하여 공백을 우회하였습니다. 여기서 보시면 URL에 값 입력 시 인코딩 되어
16진수 27 = ' , 23 = # 으로 표시가 되는 것을 알 수 있습니다. 해당 부분과 위의 "참고 ASCII" 표의 내용을 확인하여 다른 방법으로 풀어 보시기를 추천드립니다.
참고
'Code::War Game > los.rubiya.kr' 카테고리의 다른 글
[LOS] Lord of the SQL Injection - orge (0) | 2023.02.27 |
---|---|
[LOS] Lord of the SQL Injection - darkelf (0) | 2023.02.27 |
[LOS] Lord of the SQL Injection - orc (0) | 2023.01.04 |
[LOS] Lord of the SQL Injection - goblin (0) | 2022.12.29 |
[LOS] Lord of the SQL Injection - cobolt (0) | 2022.12.28 |