문제에 접속하면 다음과 같은 화면이 나타납니다.
-> 문제 페이지에는 아무런 힌트도 없어서 바로 source를 확인하였습니다.
-> GET방식으로 id를 받습니다. 이때 id는 컬럼 이름입니다.
-> 쿼리의 결과의 id가 admin이면 해결됩니다.
문제를 보고 바로 as(별칭)을 사용하면 된다고 생각하였습니다. 그 이유는 말로 설명하기 어렵고 다음 쿼리의 실행 결과를 보면 이해하시기 바랍니다.
** mysql 쿼리의 특성(?) **
1) select 'admin' from test;
=> test 있는 데이터의 수만큼 컬럼의 이름이 admin이고 값이 admin이 출력됩니다.
2) select 'admin' admin from test;
=> test에 있는 데이터의 수만큼 컬럼의 이름이 admin이고 값이 admin이 출력됩니다.
3) select 'admin' 'admin' from test;
=> test에 있는 데이터 수만큼 컬럼 이름이 admin이고 값이 adminadmin이 출력됩니다.
4) select 'admin' as 'admin' from test;
=> 해당 쿼리의 실행 결과는 select 'admin' admin from test; 쿼리와 동일합니다.
따라서 ?id='admin' id로 보내면 문제가 해결됩니다.
하지만 id 값은 싱글 쿼터('), 더블 쿼터(")가 필터링됩니다. 따라서 16진수로 바꾸고 보내면 됩니다.
0x61646d696e id => 딱 15자리입니다.
끝~~
'Hacking > WebHacking.kr' 카테고리의 다른 글
Webhacking.kr : old-25 (150 pt) (0) | 2021.01.25 |
---|---|
Webhacking.kr : old-19 (150 pt) (0) | 2021.01.25 |
Webhacking.kr : old-59 (200 pt) (0) | 2021.01.25 |
Webhacking.kr : old-42 (200 pt) (0) | 2021.01.24 |
Webhacking.kr : old-36 (200 pt) (0) | 2021.01.24 |