18번 문제에 접속하면 sql injection이라는 문제 설명과 함께 입력칸이 있다. 먼저 소스코드를 살펴보겠다.
딱 봐도 컬러풀한 이 부분만 보면 될 것 같다. 코드의 내용을 살펴보면
$_GET['no'] 값이 주어지면 데이터베이스에 연결한다
$_GET['no'] 값에 특정 문자가 포함되어 있는지 검사하고, 포함되어 있으면 "no hack" 메시지를 출력하고 종료
chall18 테이블에서 id가 'guest'이고 no 값이 $_GET['no']인 행을 검색
검색된 결과의 id가 'guest'이면 "hi guest" 메시지를 출력
id가 'admin'이면 solve(18) 함수를 호출하고 "hi admin!" 메시지를 출력
여기서 id는 admin이고 admin의 no가 2라면 해결이 된다고 나와있다. 하지만 where문에 id는 guest라고 써져있기 때문에 이 부분을 이용한 인젝션 문을 만들어야 한다.
또한 GET 명령어가 사용되었다면 문제에 나와있는 입력칸이 아닌, url칸에 답을 적어야 풀린다.
현재 기본 창의 url이다. 첫번째 no 뒤에 답을 적으면 될 것 같다.
select id from chall18 where id='guest' and no=0 or no=2
위는 항상 참이 되게 해서 id가 admin이여도 풀리게 만든 쿼리문이다.
해당 쿼리문을 넣어보니
이렇게 나와서 뭔지 몰라 찾아봤더니.. 공백 처리를 해줘야 한다고 한다. 공백 우회를 하는 방법은 공백 대신에 %0(숫자,문자?)으로 대체를 하면 된다고 한다. 그래서 최종적으로는
0%09or%09no=2
를 입력했더니 문제가 풀렸다!
'SWUFORCE > 워게임 문제풀이' 카테고리의 다른 글
H4CKING GAME code 라이트업 (0) | 2024.09.24 |
---|---|
webhacking 라이트업 old-54 (0) | 2024.09.24 |
webhacking 라이트업 old-16 (0) | 2024.08.17 |
webhacking 라이트업 old-06 (0) | 2024.07.23 |
webhacking 라이트업 old-14 (0) | 2024.07.23 |