늘모자란, 개발 :: [webhacking.kr] Challenge 29

늘모자란, 개발



아까와 흡사한 문제인것 같다.
. 이 들어가면 없애버리니까 abc.txt 는 abctxt 같은 형태로 저장되려나 보다.
pass.word나 .htaccess를 올려보니 선택된 파일이 존재한다고만 하고, 감이 안왔다.
이번 문제는 정말 너무 불친절해서 뭘 의미하는질 모르겠다..

파일을 그냥 이것저것 올려보니까 드디어 뭔가 단서를 얻은 것 같다.

글자가 안보여서 좀 키웠다. 여튼 요런게 나온다.
그리고 똑같은 파일을 올리면 또 안나온다. (안나오는게 정상은 아닌것 같다)
한번 더 올려봤다.



이제야 뭔가 감이 잡히는 느낌이다. 결국 filename으로 password를 select 해야되는 미션으로 보인다.
요컨데 예상하기로 쿼리는

INSERT INTO c29_tb (time,ip,file) VALUES (time(),$_SERVER['REMOTE_ADDR'], $file_name)


요런 모양일 것 같다. 고로..
") 로 파일명을 조작해서 보내본다.


------WebKitFormBoundary3EKwhzwJ8VfERMhS
Content-Disposition: form-data; name="upfile"; filename="'); select 1,2,password from c29_tb"
Content-Type: image/png

------WebKitFormBoundary3EKwhzwJ8VfERMhS--


아니나 다를까 에러가 돌아온다. (upload error!)

여기서 검색을 좀 했다. 나로서는 너무 답답해서 .. 원리는 알겠는데 순서를 짜맞추고 있는게 너무 답답해서 좀 참고했다.

나름의 정리를 하자면
Content-Disposition: form-data; name="upfile"; filename="abcd.txt', (select password from c29_tb), CHAR(..............))#"


첫번째 파라미터는 filename에 들어가야할 녀석이고, 두번째는 time, 그다음은 IP이다.
이때 IP는 무조건 내 아이피가 기입되야 볼 수 있는 구조이다. 즉, IP가 다르면 보여지지 않기때문에 CHAR함수를 이용해 아이피를 hex값으로 변환해 정상동작하도록 시킨다.
그리고 원래 시간이 나와야할 곳에 서브쿼리를 작성해 password를 출력하게 하면 된다.

몇십분동안 Done은 뜨는데 보이질 않아서 정말 빡쳤었는데 결국 아이피 문제였다... 다양한 방법으로 생각을 해봤으면 좋았을것을 아쉽다
2016/03/31 21:06 2016/03/31 21:06