Lord of SQL Injection

Lord of SQL Injection 8번 문제 - Troll

ilsancityboy 2024. 5. 13. 17:43

 

 if(preg_match("/admin/"$_GET[id])) exit("HeHe");

admin이라는 문자열을 필터링한다.

  if($result['id'] == 'admin'solve("troll");

admin이라는 id를 입력받으면 문제가 풀린다.

 

그럼 admin이라는 문자열을 우회해서 필터링에 막히지 않고 전달하게 되면 풀린다는뜻인데

대소문자를 구분하나 확인겸 admin을 Admin으로 입력해보았다.

 

문제 해결.

 

이 외에도 우회하는 방법은 여럿 있다.

URL 인코딩 우회: "admin" 문자열을 URL 인코딩하여 전달하는 대신, "admin"을 다른 문자열로 치환하고 해당 문자열을 URL 인코딩할 수 있습니다. 예를 들어, "admin"을 "%61dmin"과 같이 치환하고 인코딩한 후 전달할 수 있습니다. 이렇게 하면 필터링을 우회할 수 있을 수 있습니다.

대/소문자 혼용: "admin" 대신 "Admin", "aDmIn"과 같이 대/소문자를 혼용하여 전달할 수 있습니다. 필터링이 대/소문자를 구별하지 않는 경우 이 방법이 도움이 될 수 있습니다.

스페이스 및 특수 문자 사용: "admin" 대신 "a%20dmin"과 같이 스페이스를 삽입하거나 "%61dmin"과 같이 특수 문자를 추가하여 우회할 수 있습니다.

유니코드 이스케이프 시퀀스: "admin"을 유니코드 이스케이프 시퀀스로 변환하여 전달할 수도 있습니다. 예를 들어, "admin"의 유니코드는 U+0061, U+0064, U+006d, U+0069, U+006e입니다. 이를 "%u0061%u0064%u006d%u0069%u006e"과 같이 전달할 수 있습니다.