문제정보이다. 일단 페이지를 보자.
Irish-Name-Repo 1 번과 마찬가지로 디폴트페이지는 동일하다.
상단 메뉴바에서 Support 를 들어가면 admin을 포함하여 존재하는 유저 몇몇을 확인가능하다.
마찬가지로 상단의 메뉴바에서 Admin Login 페이지를 누르면 로그인폼이나온다.
이것의 소스코드를 확인해보면 1번과 동일하게 login.php 페이지에 hidden필드인 debug와 username, password 매개변수를 POST로 넘기고 있다.
hidden필드의 value를 1로 변조해서 보내면 디버그모드가 활성화되어 response로 서버에 쿼리되는 SQL문이 출력된다.
1번과는 다르게 입력값을 조작하면 SQLI Detected라는 문구가 뜬다. 확인해보면 or 를 쓰면 막힌다.
우회기법이 필요할 줄 알았지만, password 파라미터말고 username 의 입력값을 조작해주면 플래그를 획득할 수 있다.
그 admin 유저가 있다는 근거는 디폴트페이지의 Support 메뉴를 보면 admin계정이 있음을 확인할 수 있다.
최종적으로 쿼리되는 쿼리문은 아래와 같이 되는데, admin 유저가 있기 때문에 admin에 해당하는 레코드가 존재하여 참이되어 로그인을 할 수 있는 것이다. 애초에 1번도 이렇게 풀 수 있다.
SELECT * FROM users WHERE name='admin' --
FLAG : picoCTF{m0R3_SQL_plz_fa983901}
'WebHacking > picoCTF2019' 카테고리의 다른 글
JaWT Scratchpad (1) | 2022.08.27 |
---|---|
Irish-Name-Repo 3 (0) | 2022.08.26 |
Irish-Name-Repo 1 (0) | 2022.08.26 |
client-side-again (0) | 2022.08.26 |
picobrowser (0) | 2022.08.26 |