Dreamhack/Dreamhack(1단계)

[wargame.kr] tmitter (웹 해킹)

grinidia 2024. 10. 16. 15:41

 


문제

 


 

풀이

tmitter의 index 페이지는 위와 같다. 위는 로그인, 아래는 회원 가입으로 구성되어 있다.

회원 가입 소스코드를 확인하면 하단에 hint가 작성되어있다.
admin으로 회원가입을 진행해야한다. 라는 힌트를 준다.

필자는 이 문제를 직접 풀지 못했다. 너무 당연하게 생각했고, 안일한 생각이기도 하다.
우린 처음 문제를 다시 볼 필요성이 있다.

you need login with "admin"s id!

===========================
create table tmitter_user(
    idx int auto_increment primary key,
    id char(32),
    ps char(32)
);

id, ps 는 32 byte 로 사용한다는 정보다.
위 테이블 구성을 보고 어떤 DB를 사용하는 지에 대한 판단을 해야한다. (MySQL 테이블 생성 형식이다.)

또한 mysql의 특징을 생각해야한다.
MySQL에서 문자열 컬럼에 저장할 수 있는 최대 길이를 초과하는 문자열을 삽입하려고 하면, 기본적으로 초과된 부분은 잘리고, 잘린 문자열이 저장된다.
예를 들어, VARCHAR(10) 필드에 12자의 문자열을 삽입하면 첫 10자만 저장된다.

그러면 이제 admin으로 회원가입을 진행해본다.

input box에 maxlength="40"으로 늘려 길이가 32 byte를 넘을 수 있도록 설정한다.
(물론 그냥 burpsuite을 사용하는게 편하다.)

 

32자리를 초과하는 39번째 자리에 1을 넣고, 회원가입을 진행한다.
(비밀번호는 1234567 로 설정하였다.)

이 후, admin / 1234567 로 로그인을 시도할 시, flag 를 얻을 수 있다.