오늘부터 los 1번부터 라업을 작성해보겠습니다. 먼저 문제 코드 살펴보겠습니다.
/prob|_|\.|\(\)/i 이 표현을 보면 "prob", "_","." 등의 문자를 사용할 수 없게 되어 있습니다. 그리고 아래의 쿼리문을 보면 아이디와 비밀번호를 get형식으로 받도록 합니다. 여기서 get 방식이란 값을 전달할 때 get형식으로 전달하게 되면 그 값들이 url에 표시되게 된다는 특징이 있습니다. 그렇기 때문에 url에 아이디와 비밀번호를 저희가 원하는 값으로 삽입할 수 있습니다.
여기서 쿼리문이 id={$_GET[id]} and pw='{$_GET[id]}'일때 db에 있는 모든 id값을 가져오는 것입니다. 여기서 비밀번호를 모르기 때문에 비밀 번호를 항상 참이도록 맞추어줘야 합니다.
그런데 저희는 현재 가져올 비밀번호가 무엇인지 모르기 때문에 비밀번호가 항상 참인 상황을 만들어주어야 하기 때문에 url 뒤에 ?pw=1'or1='1을 삽입해주어 문제를 해결하였습니다.
여기서 1'or1='1을 사용한 이유는 1 또는 1=1 을 비밀번호를 사용한다는 의미인데 이때 비밀번호에 1이들어가도 참이고 1=1은 항상 참이기 때문에 이 값이 들어가도 참이기 때문에 이런 삽입문을 사용해줄 수 있습니다.
답 : ?pw=1'or1='1