baby sqlite 문제 풀면서 궁금한 점이 있습니다.
코드를 보면
uid='{uid}' and upw='{upw}' and level={level}; query문이 이런데
- 여기서 uid=\ upw=union//value();-- 이렇게 넣었는데 그러면 uid='' and upw=' // union/**/value(); -- level=9로 query문이 알맞게 들어 간 것 같은데 flag가 안나오는 이유가 궁금합니다.
- 처음에 문제를 풀 때 union/**/value(0x61646d696e);로 접근 했는데 flag가 나오지 않아서 value(char(0x61)||char(0x64)||char(0x6d)||char(0x69)||char(x6e))로 풀었는데 이것도 왜 안나오는지 궁금합니다
#web
작성자 정보
답변
1
AR3CIA
대표 업적 없음
1번은 uid가 admin인지 검증하는 구문이 있는데 uid가 비어있어서 플래그가 노출되지 않은 것같습니다
2번은 서버에 접근할 때 uid에 admin(0x61646d696e)으로 입력되었는 가 아니면
a+d+m+i+n (char(0x61)||char(0x64)||char(0x6d)||char(0x69)||char(x6e))으로 입력되어 서버에 들어간 다음 문자열로 합쳐지냐의 차이로 필터링이 우회된 것으로 보입니다.