Season 1/워게임 [Webhacking.kr] Old - 2 Write Up 작성자 - LRTK 아무 반응이 없어서 코드를 확인해보니, 주석으로 시간과 admin 페이지가 표시되어 있었다. Admin 페이지에 들어가니, 비밀번호를 입력하는 Form이 있었다.그래서 SQLi 문제인 듯하여, '를 넣음으로써 Error를 일으켜서 Error를 출력하려고 했다. 하지만, ' 포함하여 다양한 값들을 넣어지만 똑같은 Alert창이 출력되었다. 공격 백터가 Admin의 입력 Form이 아닌 듯하여, 다른 백터를 찾아봤다. 쿠키를 보니 Time이라는 쿠키를 볼 수 있었다. 해당 쿠키값을 True로 변경하니, 주석으로 표시된 시간이 변경이 되었다. 이번에는 False로 변경하여 확인하니, 이번에도 시간이 변경되었다.True와 False의 결과를 비교하니, 시간의 초 부분이 변경이 되었다. 그런데 보다가 True는 1이고, False는 0으로 출력되니 초가 1, 0이 출력되는 것이 아닐까? 라는 생각으로 이어졌다. 생각한 것이 적중했는지, 초 부분이 내가 입력한 값으로 변경되었다.어떻게 작동되는지 궁금하여 인터넷에 “MYSQL 숫자에서 시간으로 변환”으로 검색하니, FROM_UNIXTIME 함수를 알 수 있었다. MYSQL 시간 관련 함수 정리 - happycgi 한번 써보니, 년도만 다르고 똑같이 나왔다. SQLi은 SELECT FROM_UNUXTIME( 쿠키값 )으로 들어가게 된다. 한번 FROM_UNUXTIME 함수 안에 쿼리를 삽입해보니, 잘 작동하였다. 나는 문제의 DB 테이블명과 컬럼명을 모르니, information_schma을 이용하여 알아보도록 하겠다. (SELECT COUNT(TABLE_NAME) FROM information_schema.tables WHERE TABLE_SCHEMA != 'mysql' and TABLE_SCHEMA != 'information_schema' and TABLE_SCHEMA != 'performance_schema' and TABLE_SCHEMA != 'sys')=2) 이런식으로 계속 삽입하여 알아내면 되는데, 너무 오래걸릴 것 같아서 파이썬을 이용하여 SQLi 쿼리를 삽입하였다. 해당 코드는 너무 대충 만들어서 보여주기가 민망하여, 코드는 공유하지 않겠다. 결과적으로 테이블은 admin_area_pw과 log가 나왔고, 각 컬럼의 수는 1개와 2개가 나왔다. admin_area_pw의 컬럼은 pw가 나왔고, log의 컬럼은 ip, ip++가 나왔다.데이터의 수는 각 1개씩 나와서, 데이터의 길이를 확인해보니 admin_area_pw의 pw의 데이터가 17글자가 나와서 그것을 타겟으로 출력해봤다. 출력 결과인 kudos_to_beistlab을 admin 페이지의 입력 Form에 입력하여 서버로 보내니, Flag를 획득할 수 있었다. 공유하기 게시글 관리 MSS 'Season 1 > 워게임' 카테고리의 다른 글 (HackThisSite) Basic missions - Level 7 (0) 2021.06.07 (HackThisSite) Basic missions - Level 6 (0) 2021.06.07 Wargame.kr - md5 password (0) 2021.06.04 [Webhacking.kr] Old - 50 Write Up (0) 2021.06.03 [Webhacking.kr] Old - 55 Write Up (0) 2021.06.02 Contents 당신이 좋아할만한 콘텐츠 (HackThisSite) Basic missions - Level 7 2021.06.07 (HackThisSite) Basic missions - Level 6 2021.06.07 Wargame.kr - md5 password 2021.06.04 [Webhacking.kr] Old - 50 Write Up 2021.06.03 댓글 0 + 이전 댓글 더보기