2015 fetival HUST

Write_UP 2015. 5. 28. 16:05



저희팀은 이버네도 아쉽네요.. 마지막 300점 짜리 문제를 푸는 도중 대회가 5분정도 남아서 충분히 인증할수 있는 시간이 되었는데,

중간에 서버가 뻗어서 다시 해야 하는 바람에 그게 제대로 되질 않아서 인증을 못했네요

아래는 제가 푼 문제 라이트업입니다.

서버가 닫혀서 스크린샷등은 첨부를 못하고 입해킹 문서를 적게됬네용

편의상 반말인건 양해 부탁드려요.


- Web 200 (블로그 문제)

시작하면 개인이 운영하는 블로그가 하나 있다.

블로그 답게 자신이 쓴 글이 즐비하게 있고 

login 을 할수 있는 버튼이 있으며 운영자와 contact 할수 있는 공간도 마련되어 있었다.

지금은 서버가 닫혀있어 첨부할수 없지만, 로그인을 한 후 화면을 클릭하면 분홍색 네모가 하나씩 떨어지는걸 볼 수 있고

이렇게 클릭을 한번 할때마다 score가 오른다.

처음 이 문제를 접했을때 score를 조작하여 flag를 얻거나, admin계정의 score에 flag가 박여있을것으로 생각하고

수년간 단련한 오른손의 힘으로 재빨리 클릭을 했는데 이것이 brute force로 판명되어 IP ban을 당했다.

요청을 하여 ban을 풀고 기다리니 get_score 라는 힌트가 공개되었고, 조금 어리둥절 하던 마당에 login이 있으니

sql이 될수 있지 않냐 라고 하는 팀원의 말에 따라 우선 set_score 부분에서의 blind sql이 가능하다는걸 발견했다.

그렇게 id를 확인하니 root라는걸 알아내고 webshell을 올리는 문제라고 판단했다. 하지만 우리가 파일을 쓸 수 있는 디렉토리를

찾는데 문제가 발생하여 단순 SQL injection이 아니겠냐는 팀원의 말을 듣고 DB를 뒤져보기로 했다.

하지만 불안정한 서버의 상황때문에 blind sql로 테이블을 가져와서 확인한다는건 명백하게 무리가 있었다. 때문에 우리는 서버에서 제공하는

js파일을 받아 임의로 변조하여 score 대신 받아오는 json을 그대로 출력하게 만들어서 출력되는 문자를 점수 뿐 아닌 정보 그 자체를 출력하게 만들고

get_score를 통한 sql injection을 시도하였다. 다행히도 쿼리는 정상작동 하였고, keytable 이라는 테이블 밑의 value 라는 컬럼을 발견했다.

이를 통해 키 값을 얻어냈는데, 인증이 되지 않아서 팀원들과 고민한 끝에 가져온 값 중에 key_is 에 해당하는 문자열을 떼고 인증하니

정상적으로 인증이 되었다.


- Reversing 500? (마리오문제)

게임을 시작하니 단순한 마리오게임인줄 알았는데 뭔가 넘을수 없는 4차원의 구덩이가 있었다.

처음 접근은 클리어를 하면 키 값이 출력될것 같아서 String을 먼저 찾아보기로 했다.

문자열이 그림으로 출력되어서 간단히 찾을수 없다는걸 깨닫고 다른 접근 방법을 하기로 하였는데, 이때 팀원이 fceux라는 프로그램을 발견, 디버깅에 들어갔다.

해당 툴에서는 맵을 개조할수 있는 여러가지 기능이 있었는데, 자세한 사용법을 몰라 해매던 도중 나는 메모리 디버깅 메뉴를 발견하여 실행해 보았다.

메모리디버깅에서는 특정 오프셋에 있는 메모리가 얼마나 자주 변화하였고 현재값이 어떤 값인지 알려주는 간단한 테이블이 눈에 들어왔다.

여기서 만약 내가 점프를 하면 마리오의 현재 y축 위치, 점프 횟수, 점프 가속도 등이 어딘가에 세팅되어 있을것 같아서 점프하고 일시정지를 반복하는 방법으로

메모리가 변하는 곳을 추려내어 해당 오프셋을 찾았는데, 점프를 할때 올라가는값은 1,2,3,4 내려가는 값은 -1,-2,-3,-4 등으로 변하는걸 볼 수 있었다.

해당 롬을 에뮬레이터에 올리고 치트엔진을 attach 시켜서 점프를 하고 난 뒤 값을 검색, 내려왔을때 값을 검색.. 을 반복하여 점프에 해당하는 메모리 주소 3개를

찾아서 모두 양수로 만들고 값을 고정시켰더니 마리오가 무한점프 하며 하늘을 날기 시작했다.

이렇게 넘을수 없는 4차원의 구덩이를 넘고 그 뒤에 있는 넘을수 없는 4차원의 벽을 넘으니 벽돌로 KEY IS 라는 문자가 보이기 시작했고

해당 문자를 다 읽을때 까지 마리오는 하늘을 날았고 키 값을 인증했다.



Posted by IzayoiSakuya
,