id랑 pw가 몇가지 필터링당하고 있다. id에 admin만 불러오면 될 것 같다.
' id='admin'#으로 주면 될 것 같은데 해봤더니 안된다. 필터링부분에 따로 뭐가 없던걸 보면
php magic quote로 single quote를 필터링 하고 있는 것 같다. 그렇다면 우회를 해야하는데
처음보는 함수가 있다.
mb_convert_encoding()라는 함수가 입력값을 무슨처리를 하길래 찾아봤더니 3번째 인자로 들어온 인코딩 방식을 2번째 인자의 인코딩방식으로 전환시켜주는 것 같다. 이걸로 뭐하라는거지하고 있는데 연관검색어에 mb_convert_encoding 취약점이란게 보였다. 들어가보니 인코딩과정에서 멀티바이트 처리가되면서 백슬래시 앞에 %a1 ~ %fe 의 값이 들어오면 %a1\가 한개의 문자처럼 취급되는 취약점 이란다.
그렇다면 magic quote로 인해 \'방식으로 필터링되니까 %aa' or id='admin'#방식으로 값을 주면 %aa\' or id='admin'#가 되어서 백슬레쉬가 문자가되어 우회가 될 것 같다.
id에서 admin이 필터링됬으니 char(97,100,109,105,110)로 바꾸고 특수문자 인코딩해서 넣어주면 될 것 같다.
시도해보니 다음과 같이 생각처럼 잘 동작한다.