id = 'admin'의 pw를 알아내야 하는 문제이다. 기존에 이용하던 파이썬 프로그램을 이용해서 pw 길이를 알아냈는데, 40이었다. ?pw=' or id = 'admin' and length(pw) =40 %23을 입력하면 Hello admin이 출력 -> length가 40 기존에 이용했던 파이썬 프로그램으로 각 자리별 패스워드를 확인했더니 모두 0 이어서, 위와 같이 pw를 입력했으나, 클리어 되지 않았다.. 혹시나 해서 pw중 한자리의 length를 확인 해봣더니 4였다.?pw='or id = 'admin' and length(substr(pw,1,1))= 4 %23 따라서 범위가 128~255인 확장 아스키 코드에 대해서 패스워드를 검색하도록 기존의 파이썬 프로그램을 수정하였고,멀티 바이트 ..
쿼리 입력에 대해서 임의의 id를 반환 받아야 하는 문제이다. 1. 주석에 필터링이 되어있다.(#, -)2. 입력 글자수가 6이하여야 한다. 일단 #, --를 사용하지 못하므로 우회하는 방법에는 /**/ 와 ;%00 이 있다. 글자 수 제한이 있기 때문에 길이가 짧은 %00을 이용하였고,false = false -> true 라는 것을 이용하였다. ?pw=')=0;%00을 입력하면 쿼리 입력의 조건 부분에서 pw=('') -> false, 0 -> false 이므로where true 주석이 되면서 클리어 된다. 입력 글자수도 딱 6자이다..
바로 전 문제인 zombie_assassin 과 동일 한 문제이다그러나 이번 문제는 싱글쿼터를 ereg가 아닌 preg_match로 필터링 하였다. preg_match에는 특별한 취약점이 없다 따라서, 문자열 이스케이프 \을 이용 하면 된다. ?id=\&&pw=or 1=1;%23 와 같이 입력하면 \ 뒤의 싱글쿼터가 문자로 인식되어where id='\' and pw=' or 1=1 ; #' 에서빨간색 부분이 id의 값으로 인식 된다. 따라서, or 뒤의 1=1에 의해query 입력에 대해 임의의 id가 반환되어 클리어 된다.