쉽고 깔끔하게
[LOS ; Lord of SQL Injection] 1번 gremlin 문제풀이 본문
728x90
반응형
문제
https://los.rubiya.kr/chall/gremlin_280c5552de8b681110e9287421b834fd.php
풀이
- preg_match($pattern, $subject, [, $matches]) : 문자열 안에서 특정한 정규식 패턴의 존재 여부를 찾는데 유용한 함수
- $pattern : 문자열로 검색할 패턴
- $subject : 입력 문자열
- [$matches] : 사용 시 패턴에 매치되는 내용을 배열에 담아둠
따라서 얻을 수 있는 정보로는 id와 pw의 입력 값 필터링 규칙으로 다음과 같은 정보를 필터링한다는 것이다.
1) prob
2) _
3) .
4) ( )
싱글 쿼터(')나 더블 쿼터(")는 필터링하지 않는 것으로 보아 SQL Inejction의 가장 기본적인 공격인 ' or 1=1#이 가능할 것으로 보인다.
해당 공격은 ' or 1=1을 통해 조건절(WHERE 절)이 항상 참이 되도록 만들고, MySQL의 주석인 #을 통해 뒤에 오는 것들을 주석 처리해줌으로써 PW인증을 무력화시킨다.
※ or 연산
X | Y | X or Y |
1 | 1 | 1 |
1 | 0 | 1 |
0 | 1 | 1 |
0 | 0 | 0 |
그러나 ' or 1=1#을 URL에 그대로 입력해주면 #이 쿼리문에 입력되지 않는 것을 볼 수 있다.
따라서 #을 URL Encoding 값인 %23로 변경하여 ' or 1=1%23을 입력해주면 문제를 해결할 수 있다.
728x90
반응형
'WebHacking > LOS' 카테고리의 다른 글
[LOS ; Lord of SQL Injection] 6번 darkelf 문제풀이 (0) | 2022.03.16 |
---|---|
[LOS ; Lord of SQL Injection] 5번 wolfman 문제풀이 (0) | 2022.03.15 |
[LOS ; Lord of SQL Injection] 4번 orc 문제풀이 (0) | 2022.03.14 |
[LOS ; Lord of SQL Injection] 3번 goblin 문제풀이 (0) | 2022.03.11 |
[LOS ; Lord of SQL Injection] 2번 cobolt 문제풀이 (0) | 2022.03.10 |