약간 랭킹 표시되었던거처럼 모양이 그렇다. index.php를 올리려니까 파일명이 세글자 넘으면안된다고 제지당한 모습이다
글을 일단 쓰면, 스스로 삭제 할 수 있도록 delete 버튼이 생긴다.
delete 버튼을 보니 인자값에 timestamp를 활용하고 있다. timestamp를 그럼 내가 조작해서 보내면 이사람들 글을 지울지 있지 않을까 라는 생각이 들었다. (언제 쓴진 모르니까 막연하다 물론)
한참 돌려놨다가 이게 아닌것 같다. 그래도 배점 350점 짜린데...
아까 세글자 안된다는 뭔가가 마음에 자꾸 걸린다. 파일을 업로드해보기로 한다.
오늘 내내 삭제질만 할뻔했다. 뭔가 새로운 버튼이 생겼다.
클릭해보니 파일명은 그대론데, 내용이 null이다. 아까 커맨드라인 인젝션이 생각이 난다.
&ls도 해보고 &'l's도 해보고 하는데 잘 안된다.
system("echo null > $_FILE[''][name]")
뭐 이런 모양일것 같은데....
세글자안에서 해결 해야되고 두글자는 ls가 확정인 상태. 아까 할떄 필터된 단어중에 ; 이 있었다. 이녀석을 넣어본다.
별 달리 달라지는건 없는것 같...은데? 삭제를 누르니... ?????
이럴때 양키들은 like a charm 이라고 한댔나
원리가 궁금하니 좀 찾아보자면,
&는 앞선 명령어가 성공했을때 연속으로 뒤도 실행되게 하는것이다.
근데 ; 는 원라이너를 위해 앞이 실패하든말든 그냥 구분해주는 느낌으로 쓰는것이다.
고로 업로드할때는 별 문제가 되지 않지만 삭제를 하면 이런 꼴이 되는것이다.
rm upload/;ls
앞에서 의도적으로 오류를 만들고, ls를 하게 해 파일리스트가 나오게 하는 것.
3글자 힌트가 좀 결정적이었던것 같다.