아무 반응이 없어서 코드를 확인해보니, 주석으로 시간과 admin 페이지가 표시되어 있었다.
Admin 페이지에 들어가니, 비밀번호를 입력하는 Form이 있었다.
그래서 SQLi 문제인 듯하여, '
를 넣음으로써 Error를 일으켜서 Error를 출력하려고 했다.
하지만, '
포함하여 다양한 값들을 넣어지만 똑같은 Alert창이 출력되었다.
공격 백터가 Admin의 입력 Form이 아닌 듯하여, 다른 백터를 찾아봤다.
쿠키를 보니 Time이라는 쿠키를 볼 수 있었다.
해당 쿠키값을 True로 변경하니, 주석으로 표시된 시간이 변경이 되었다.
이번에는 False로 변경하여 확인하니, 이번에도 시간이 변경되었다.
True와 False의 결과를 비교하니, 시간의 초 부분이 변경이 되었다.
그런데 보다가 True는 1이고, False는 0으로 출력되니 초가 1, 0이 출력되는 것이 아닐까? 라는 생각으로 이어졌다.
생각한 것이 적중했는지, 초 부분이 내가 입력한 값으로 변경되었다.
어떻게 작동되는지 궁금하여 인터넷에 “MYSQL 숫자에서 시간으로 변환”으로 검색하니, FROM_UNIXTIME 함수를 알 수 있었다.
한번 써보니, 년도만 다르고 똑같이 나왔다.
SQLi은 SELECT FROM_UNUXTIME( 쿠키값 )
으로 들어가게 된다.
한번 FROM_UNUXTIME 함수 안에 쿼리를 삽입해보니, 잘 작동하였다.
나는 문제의 DB 테이블명과 컬럼명을 모르니, information_schma을 이용하여 알아보도록 하겠다.
이런식으로 계속 삽입하여 알아내면 되는데, 너무 오래걸릴 것 같아서 파이썬을 이용하여 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를 획득할 수 있었다.
'워게임 > webhacking.kr' 카테고리의 다른 글
[Webhacking.kr] Old - 28 Write Up (0) | 2021.06.07 |
---|---|
[Webhacking.kr] Old - 22 Write Up (0) | 2021.06.07 |
[Webhacking.kr] Old - 50 Write Up (0) | 2021.06.03 |
[Webhacking.kr] Old - 55 Write Up (0) | 2021.06.02 |
[Webhacking.kr] Old - 52 Write Up (0) | 2021.06.01 |