id = "admin" 인 계정의 pw를 알아내야 하는 문제이다.pw 는 싱글쿼터에 대한 필터링이 되어있고,no는 substr, =, or, and, 공백, like 등에 대해 필터링이 되어있다. 일단 admin의 pw 길이를 알아내야 한다!필터링 우회를 위해싱글 쿼터 -> 더블 쿼터or -> ||and -> %26공백 -> %09, %0a= -> in으로 대체 하였다. ?no=""||id%09in("admin")%26%26length(pw)%09in%09(8)위와 같이 입력하면 Hello admin이 출력된다. pw의 길이는 8이다. pw의 길이를 알아냈으니, pw의 각 자리를 알아내야 한다. 지금까지는 substr을 이용했지만 필터링이 되어있기 때문에, mid를 이용하였다. ?no=""||id%0ai..
GET으로 pw와 no를 전송할 수 있다.pw에는 ' 에 대한 필터링이,no에는 prob, '_', '.', '()', ', substr, ascii, = 에대해 필터링이 걸려있다. 이 필터링을 우회하여 id='admin'인 계정의 패스워드를 알아낸 뒤 입력해주어야 하는 문제이다. 먼저 패스워드의 길이를 알아내자. query에서 맨뒤에 있는 no를 이용하였다.'에 필터링이 걸려있으므로 ' 대신 "(double quote)=에 필터링이 걸려있으므로 =대신 like (%와 함께 사용)를 이용하였다. ?no=3 or id like "admin%" and length(pw) like "8%"위와 같이 입력하였을때, Hello admin이 출력되었다.따라서 id='admin'인 계정의 패스워드의 길이는 8임을 알..
or, and, substr(, = 에 필터링이 걸려있다.이 필터링을 우회하여 id='admin'인 계정의 password를 알아낸 뒤, 이 pw를 입력해주어야 해결되는 문제이다. 일단 패스워드의 길이를 알아내야 한다. or에 필터링이 걸려있으므로 or대신 ||and에 필터링이 걸려있으므로 and대신 %26%26 (&&으로 입력하면 인식이 안됨)=에 필터링이 걸려있으므로 = 대신 like를 이용하였다.like와 이용되는 '_' (한 글자와 매칭) , '%' (여러 문자[0개 이상]와 매칭) 중 %를 이용하였다. ?pw='||id like 'admin' %26%26 length(pw) like '8%'%23위와 같이 입력했을때, Hello admin이 출력되는 것으로 보아, id='admin'인 계정의 패..