728x90
우선 문제를 접속하면 아래와 같은 코드를 볼 수 있었다.
우선 아래 코드인 쿼리 부분을 확인해보면 id와 pw를 GET 방식으로 받아오는 것을 알 수 있다.
그리고 다음 if문을 통해 query를 db에 질의하여 결과값이 있다면 문제를 해결할 수 있을 것으로 유추할 수 있다.
우선 GET방식으로 아무 값이나 넣어보자. 다음 사진과 같이 URL 주소 맨 뒤에 '?id=1&pw=1'를 입력해보니 where 부분에 값이 들어가 있는 것을 볼 수 있었다.
? : URL 주소 뒤에 변수 지정 역할
& : 변수와 또 다른 변수의 값을 넣어줄때 변수를 구분해주는 역할
쿼리문만 따로 보자면 입력된 아이디와 패스워드가 일치하는 id를 검색하는 구문이라는 것을 확인할 수 있다. 따라서 php코드에서 if문은 이 쿼리문에서 id값이 조회되기만 하면 문제를 해결할 수 있을 것이다.
즉, 우리는 db에 저장된 id와 pw를 모르지만, 현재 보이는 조건을 true로 반환하기 위해 or 연산을 사용하여 쿼리문을 작성해보자.
id='1' or '1'='1' and pw='1' or '1'='1'
위와 같이 쿼리문을 작성한다면 id값이 1이던 아니던, pw값이 1이던 아니던 '1'='1'은 True를 반환하기 때문에 or 연산으로 인해서 True가 된다.
따라서 ?id=1' or '1'='1 & pw=1' or '1'='1 를 퀴리문으로 넣어주니 아래 이미지와 같이 문제를 해결할 수 있었다.
참고자료
https://she11.tistory.com/106
728x90
'CTF' 카테고리의 다른 글
[LOS] goblin write-up (0) | 2023.11.01 |
---|---|
[LOS] cobolt write-up (0) | 2023.11.01 |
[Dreamhack] simple_sqli write-up (1) | 2023.11.01 |
[RootMe] File upload - Double extensions write-up (0) | 2023.10.02 |
[RootMe] Install files (0) | 2023.10.01 |