Hackme CTF Challenge(PHP Restrictions Bypass)

해킹은 많은 웹 문제를 안고 있습니다 이 것을 "Restrictions Bypass"라고합니다

설명에 따르면 두 단계의 도전 과제라고합니다 여기에있는 목표는 같은 위치에있는 파일의 "내부"에 저장된 키를 찾는 것입니다 indexphp로 디렉토리 고유 플래그를 생성하려면 /flagphp 페이지에 키를 입력하십시오

괜찮아 시작하겠습니다 그래서, 우리가 도전을 시작할 때 indexphp에는 read_me

txt라는 텍스트 파일에 대한 링크가 있습니다 URL을 보는 힌트가 있습니다 URL을 보면 로컬 파일 포함 취약점에 취약한 것으로 빠르게 의심됩니다 그러나 일부 파일을로드하려고하면 작동하지 않습니다 PHP 래퍼도 시도했지만 운이 없었습니다

그런데 이상한 것을 발견했습니다 "read_metxt"를 포함하는 디렉토리로 돌아 가려 할 때, 그것은 open basedir 제한 오류 저자는 우연히 우연히 해결하기를 바라지 않았습니다 보시다시피 입력 내용이 readfile 함수로 들어갑니다

또 다른 이상한 행동! 입력에 read_me를 포함하면 오류가 발생하지만 read_me이 포함되어 있지 않으면 스크립트는 단순히 일부 텍스트를 출력하지 않습니다 그래서 여기에서는 read_metxt를 사용하고 닷 점 슬래시를 추가하여 디렉토리를 경로가 차단되었습니다 그래서, 방금 "txt"를 삭제하고 download

php를로드했습니다 좋아, 그럼 코드를 읽어 보자 그래서 $ 파일에는 우리의 입력이 들어 있습니다 입력 길이가 50보다 길면 실행이 중지됩니다 $ fileName은 기본적으로 마지막 슬래시 뒤에 오는 텍스트 인 기본 이름으로 구성됩니다

그리고 여기 예! read_me가 포함되어야합니다 그렇지 않으면 코드 실행이 중단됩니다 그 후 우리의 입력은 readfile 함수로 간다 그 후 가장 중요한 부분입니다 eval은 기본적으로 string을 PHP 코드로 취급합니다

여기서 $ fileName은 stats 디렉토리의 statstxt에 기록됩니다 이제이 코드를 악용 해 봅시다 슬래시 이후의 내용은 모두 readfile에 저장됩니다 따옴표를 조정하고 페이로드를 입력 해 봅시다

그래서 저는 첫 번째 인용구에 따옴표를 붙이고 닫는 괄호와 부호를 붙였습니다 그 후 현재 디렉토리의 파일을 인쇄하고 다시 밸런싱하는 코드 따옴표 및 재료 마지막 쿼리를 살펴보면 오류가없는 다음과 같은 결과가 표시됩니다 잘 작동합니다 여기서 우리는 비밀 텍스트가 숨겨진

key 확장자를 가진 파일을 볼 수 있습니다 그러나 파일의 내용을 인쇄하는 것은 어렵습니다 단지 50 개의 문자 만 입력하고 사용할 수 있기 때문입니다 그 한도를 완전히 초과 할 것입니다 따라서 파일 이름은 md5로 암호화되었으므로 해독 할 수 있고 사용할 수 있습니다

해독 된 형식을 사용하면 키를 가져 와서 플래그를 생성 할 수 있습니다