id='admin'의 pw를 알아내면 된다. case와 if에 필터링이 되어있는데,select 1 union select 2를 이용하면 된다. ?pw=' or id='admin' and (select 1 union select (length(pw)=8))%23 와 같이 입력하면 length(pw)와 비교하는 값이 실제 pw의 길이일 경우에만 에러가 출력되지 않는다. pw의 길이는 8이다. ?pw=' or id='admin' and (select 1 union select (ord(substr(pw,1,1))=53))%23와 같이 입력하면 ord(substr(pw,1,1)) 와 비교하는 값이 실제 pw의 첫째 자리 값일 경우에만 에러가 출력되지 않는다. 위를 이용하여 파이썬 프로그램을 작성하였다.pw는 5..
id='admin'의 pw를 찾는 문제이다. 지금까지는 조건식이 맞으면 "Hello admin!" 이 출력되는 것을 이용할 수 있었지만, 이번에는 에러 메시지가 출력되는 입력을 이용한다. select 1 union select 2 가 subquery로 사용될 경우 Subquery returns more than 1 row 라는 에러가 출력된다. if(조건, 참, 거짓) 을 이용하면 된다. if(length(pw)>pw길이,(select 1 union select 2),1) 를 이용하게 되는데, pw길이를 1에서 부터 증가시켜 입력한다면, 게속 에러가 출력되다가 pw길이가 실제 pw의 길이와 같아질 때 에러가 출력되지 않게된다. ?pw='or id ='admin' and if(length(pw)>16,(s..