webhacking.kr 18번
처음 접속 화면부터 sql 인젝션 문제라는 힌트를 주고 있다.
no라는 변수에 값이 존재해야한다.
쿼리문을 살펴보면 chall18 테이블에 id는 guest이고 no는 get으로 전달된no
주석으로 힌트가 있다 admin의 no는 2
id가 게스트이면 geust
id가 admin이어야 풀린다.
입력부분을 살펴보면 입력으로 전달되는 것의 이름은 no이다.
쿼리문에 인젝션하기 위해서
2 or no=2를 넣어주면
select id from chall18 where id='guest' and no=2 or no=2 가 완성되는데
guest의 id는 1이므로 no=2인 값이 선택되게 만드는 것이다.
하지만 form에 위와같이 입력을 하게되면
preg_match에 의해서 공백 때문에 no hack이라는 결과가 나오고 만다.
그렇기 때문에 url을 이용해 입력해줘야하는데
url애서 공백을 나타내려면 %09를 입력해줘야한다.
끝!
'문제풀이 > 보안 writeup' 카테고리의 다른 글
webhacking.kr 8번 (0) | 2021.03.19 |
---|---|
webhacking.kr 27번 (0) | 2021.03.18 |
webhacking.kr 35번 (0) | 2021.03.18 |
webhacking.kr 33번 (0) | 2021.03.16 |
webhacking.kr 16번 (0) | 2021.01.21 |