티스토리 뷰

LOS 포스팅에 앞서 내용이 틀릴 수도 있으며, 해당 부분 지적은 감사히 받겠습니다.

38단계 소스코드이다.

id와 pw가 addslashes 처리되어있으며 id가 admin이어야 문제가 해결된다.

addslashes는 필터링 문자열 앞에 \를 넣어주기 때문에 널 바이트 우회로 시도해본다.

? id=admin% fa'--+-

실패다.

이유를 찾아보니 sqlite는 mysql과 달리 addslashes처리에 \가붙어도 \가 이스케이프 문자로 쓰이지 않기에 그냥 문자열만 추가된다고 한다.

따라서 싱글 쿼터 없이 id에 admin을 입력할 방법을 찾아야 한다.

0x도 먹히지 않는다.

한참을 고민하다가 char을 생각했다.

성공

 

시행착오

1. sqlite에서는 or이 ||로 사용될 수 없다.

2. sqlite에서는 \가 이스케이프 문자로 쓰이지 않는다.

댓글