ABOUT ME

Contact.
Email:yj.anthonyjo@gmail.com
Introduce : CS Student.

Today
-
Yesterday
-
Total
-
  • Wargame.kr login_fillter문제
    카테고리 없음 2018. 3. 26. 00:31
    반응형

    첫번째 포스팅으로 login_filter를 한다. 왜냐면 기억해두고 싶은게 있어서

    분석하여 쓸것은 아니고 어떤 요소가 이 문제를 푸는데에 쓰이는지만 적어보겠다.

    바로 Php는 대,소문자를 구분하지만, 쿼리는 (mysql) 구분하지 않는다는 것이다.

    처음에는 mysql_real_escape_string(trim($_POST['id'])); 이것에 꽃혀서 나오지를 못했으나, 나중에 그것도 롸업을 보고 알게 되었다. 그렇지만, mysql_real_escape_string함수에 대해 알고 우회방법까지 알 수 있는 계기가 되어 좋았다. 

    좀더 부연설명 해보자면, mysql_real_excape_string함수는 sql injection을 막기위해 '등과 같은 문자앞에 \를 넣어 구분하게 해주는 함수이다.

    여기서 취약점은 

    1. php는 멀티바이트를 이용한다.

    2. mb_convert_encoding함수는 인코딩을 할 때 쓰이는 함수 이며, 언어를 한국->일본, 중국->한국 등 다른나라 언어로 바꿀 때 사용된다.


    출처: http://dydgh499.tistory.com/32 [Creating my everything]


    이 함수를 이용할때 취약점이 발생한다.

    멀티바이트를 사용하는 언어셋 환경에서는 백슬래시 앞에 %a1~%fe의 값이 들어오면 인코딩이 깨지면서 백슬래시를 덮어씌어버려서 2바이트의 멀티바이트를 하나의 문자(1바이트)처럼 표현이 되는 취약점이 있다.

    예를들어 addslashes함수나 mysql_real_escape_string함수에 0x27(')이 들어가게 되면 0x27앞에 백슬래쉬를 붙여준다. 즉 0x5c27(\')이 된다. 여기서 %a1~%fe의 값이 들어오면 백슬래쉬를 먹어버린다고 했으니 0xa15c27을 삽입하면 '만 남개된다.

    이로써 우회가 가능하다고 볼 수 있다.



    출처: http://dydgh499.tistory.com/32 [Creating my everything]


    그렇다고 한다. 



    그리고 이 모든내용은 

    http://rootable.tistory.com/entry/addslashes-mysqlrealescapestring-%EC%9A%B0%ED%9A%8C

    에서 왔다.



    반응형

    댓글

Designed by Tistory.