ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Webhacking.kr] 29번 풀이
    Wargame/webhacking.kr (old) 2019. 5. 7. 02:49


    파일을 업로드 할 수 있다. c29_tb 테이블에서 password를 알아내는 문제이다.

    str_replace 함수로 파일 이름의 .을 공백으로 치환하며, 문제의 소스 코드는 없다.


    우선 파일 ghghgh를 업로드하여 어떻게 구성되어 있는지 알아보았다.



    파일을 업로드하니 time, ip, file의 테이블 형식으로 페이지에 출력된다.

    insert 구문을 사용하여 time, ip, file을 DB에 저장하고 불러오는 것 같다.


    insert into c29_tb values('\$time', '\$ip', '\$file');


    추측대로 위와 같은 insert 구문을 사용하는지 다중 데이터를 삽입해 보았다.


    insert into c29_tb values('\$time', '\$ip', 'zz'),(1, 2, 3)--');

    file : zz'),(1, 2, 3)--



    upload error! 가 출력된다. 어떤 문자가 필터링되어 있는 것 같다.

    필터링된 문자를 알아보기 위해 file명에 , ' -- ( ) 를 넣어 업로드 해보니 파일이 이미 존재한다.



    upload error! 가 아닌 것을 보면 임의의 문자가 필터링 된 것은 아닌 것 같다.

    혹시나 싶어 파일명을 변경하여 업로드 해보았다.



    이것저것 업로드해본 결과 '가 없으면 query error!가 출력되지 않고 파일이 업로드된다.

    '가 필터링 된 것은 아니지만, '를 넣으면 query error!가 발생한다.


    Column이 time, ip, file의 순이 아니라면, 싱글 쿼터가 잘못 닫혀 에러가 발생할 수 있다.

    따라서, Column의 순서 찾아보았다.


    1. time, file, ip (file : zz', 내 ip 값),(1, 'tt)

    upload error!


    2. ip, file, time (file : zz' 1),(내 ip 값, 'tt)

    upload error!


    3. file, ip, time (file : zz', 내 ip 값, 1),('tt)

    Done


    4. file, time, ip (file : zz', 1, 내 ip 값),('tt)

    Done


    단, ip 값은 .이 공백으로 치환되기 때문에 char함수나, hex를 이용하여야 한다.


    3. file, ip, time



    뒤의 데이터로 넣어준 tt 파일만 업로드 되었다.


    4. file, time, ip



    다중 데이터 둘 다 업로드 되었다.

    Column의 순서는 file, time, ip순 이다. ip 값을 변경하여 파일을 업로드한 결과, 페이지에 출력되지 않았다.

    아마 ip 값에 따라 파일들을 페이지에 출력해주는 것 같다.


    값을 확인하기 위해서는 ip 값은 고정해야 한다.

    따라서 값을 변경할 수 있는 time 부분을 이용하여 password의 값을 알아내야 한다.

    hint의 select password from c29_tb 서브 쿼리를 이용하여 password를 출력시켜보자.


    file : zz',(select password from c29_tb), 내 ip 값),('tt



    password가 출력되었다.

    알아낸 password를 Auth페이지에 인증하면 문제가 풀린다.



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

    [Webhacking.kr] 32번 풀이  (0) 2019.05.07
    [Webhacking.kr] 31번 풀이  (0) 2019.05.07
    [Webhacking.kr] 27번 풀이  (0) 2019.05.07
    [Webhacking.kr] 26번 풀이  (0) 2019.05.07
    [Webhacking.kr] 25번 풀이  (0) 2019.05.07

    댓글

@Jo Grini's Blog