article thumbnail image
Published 2021. 11. 11. 16:49

 

파일을 업로드 폼이 존재한다.

FLAG는 다른 테이블이 있다고 한다.

일단 아무파일이나 업로드해보자.

 

업로드 시간과,자신의 ip, 파일 이름이 테이블에 나타났다.

문제의 아이콘이 DB인 것을 보아 업로드한 filename이 DB에 저장되는 것 같다.

 

 

 

파일 업로드를 통해서 시도할만한 방법이 없어보여 burp suite를 실행해봤다.

 

 

form data로 name과 filename이 존재하는 것을 확인했다.

filename의 값이 DB로 전달되는 것 같다. 실제로 그런지 확인해보자.

filename을 test로 변경하고 전송해봤다.

 

 

 

맨 아래에 filename이 test로 바뀌었다.

filename에 담긴 값이 DB로 전달되는 것을 확인했다.

filename 파라미터에서 injection을 수행하면 될 것 같다.

 

filename은 insert문으로 삽입되는 것 같다.

예상 insert문은 다음과 같다.

INSERT INTO 테이블명 VALUES(time, ip, filename);

 

filename 파라미터에는 파일명만 들어있었으니까

INSERT INTO 테이블명 VALUES(time, ip, filename);    파라미터 값이 해당 부분에 삽입되는 것 같다.

실제로 그런지 확인해보자.

 

 

 

 

기존 데이터 뒤에 time, ip, filename순으로 새로운 데이터를 추가해서 확인해봤다.

 

 

음... column순서가 틀린모양이다.

이번엔 filename, time, ip 순으로 injection해봤다.

 

 

 

....이것도 아닌 모양이다.

아무래도 INSERT문 구조를 잘못 예상한 것 같다.

애초에 INSERT INTO 테이블명 VALUES(filename); 식으로 구성해놓고 명시하지 않은 값은 default로 채운게 아닐까...

 

위 구조를 기반으로 다시 injection을 시도했다.

 

 

 

..........!!! 드디어 됐다.

정확한 INSERT문의 구조는 모르겠지만, VALUES(filename)으로 삽입하고 명시되지 않은 값은 default로 초기화한 것 같다.

 

column의 순서는 filename, time, ip였다.    (테이블에 나온 순서랑 다름...)

이제 flag를 찾아야 한다.

NOTICE에 flag는 다른 테이블에 있다고 한다.

 

일단 현재 DB name을 알아내자.

 

 

(select database()를 쓸 때 ()로 묶지 않으면 Upload error발생했음)

 

 

DB명은 chall29다.

이제 table명을 찾아보자.

 

 

information_schema는 MySQL 서버 내에 존재하는 DB의 메타 정보(테이블, 칼럼, 인덱스 등의 스키마 정보)를 모아둔 DB다.

information_schema.tables에는 MySQL에 존재하는 table에 대한 정보가 담겨 있다.

따라서 table의 schema가 chall29인걸 select하고,

group_concat으로 table_name을 묶으면 chall29에 있는 table name을 한 번에 찾을 수 있다.

 

 

flag가 있는 table명은 flag_congratz이다.

이제 flag_congratz에 column명을 알아내자.

 

 

이번엔 column명을 알아내야 하므로 information_schema.columns에서 select했다.

table_name이 flag_congratz인 것을 찾아 column명을 묶어 출력하면 된다.

 

 

flag_congratz에는 flag column 딱 하나만 존재하는 것을 확인했다.

 

 

 

Flag를 획득했다!

FLAG{didYouFeelConfused?_sorry:)}

 

 

old-29 해결!

 

 

 

 

'Study > Web Hacking' 카테고리의 다른 글

[dreamhack] http/https  (0) 2022.01.25
[Webhacking.kr] old-40  (0) 2021.11.11
[Webhacking.kr] old-55  (0) 2021.11.05
[Webhacking.kr] old-34  (0) 2021.11.05
[Webhacking.kr] old-53  (0) 2021.10.09
복사했습니다!