'Write_UP'에 해당되는 글 24건

  1. 2015.08.16 Codeshell - adm1nkyj trick
  2. 2015.05.28 2015 fetival HUST
  3. 2014.11.25 2014 홀리실드 write-up(find out, syntax highlighter)
  4. 2014.11.01 wargame.kr pwcrack

Codeshell - adm1nkyj trick

2015.08.16 09:09

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

2015 fetival HUST

Write_UP 2015.05.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 Maid:: IzayoiSakuya

2014 홀리실드 참여한 후 제가 푼 문제만 적어봅니다.

주최측에서 서버를 다시 열어주지 않아 텍스트로만 접근하는 여러분은 상당히 재미가 없겠네요.

문제에 게싱도 많았고 억지도 있었지만 운영한 사람들 고생을 생각하면 마냥 욕할수는 없는 노릇입니다.

여튼, 대회는 끝이났으니 후에 이 문서를 보고 공부하실 분이 계실까 하여 제가 적은 라이트업만 공개합니다.





2014 holyshield write up


1. Find out (100)

해당 문제에 접속하게 되면 html형식으로 단지 정보만 뿌려주는 홈페이지로 접속할수 있게 되고, 검색창이 하나 있다.

검색창에서의 sql인젝션 등은 작동하지 않으며 페이지를 살펴보면 기존에 있던 글을 긁어와서 사용했지만 약간 다른점을 몇몇 발견 할 수 있고

그것들과 힌트를 토대로 어떤 페이지에 들어가게 되면 메인 페이지와 똑같이 생긴 페이지에 접근할 수 있지만, 이 페이지에는 PUT 메소드가 허용되어 있고 

html에 숨겨져 있는 텍스트 파일에 접근하게 되면 /hide/userteamname.txt에 leader email을 적어서 올리라는 내용이 있었다.

/hide 라고 적혀 있어서 최상위 경로에 업로드 했지만 40분동안 실패

결국 알고보니 찾아들어간 페이지에서 hide 폴더에 업로드 해야 하는문제였다.

(payload : PUT http://~ /hide/team.txt


email@here.com)

절대경로와 상대경로를 구분해서 txt파일에 표시했었다면.. 하는 문제였다.


2. Syntax Highlighter 1,2 (200, 200)

Syntax Highlighter 1,2 문제는 code injection 관련 한 문제 라고는 하지만.. 같은 풀이방법으로 2문제가 다 풀려서 솔직히 의도 파악은 힘들었다.

두 문제 모두 내가 올린 파일에 대해서 highlight 방식을 지정해 주면 그 문법에 맞게 하이라이팅 한 것을 웹페이지에 뿌려주는 형식이었다.

팀원의 발견으로 cat 명령어를 내부적으로 사용하는것을 알았고, FLAG값을 읽어오게 페이로드를 작성했으나 FLAG라는 문자열을 하드코딩으로 필터링 해 둔것 같았다.

cat 명령어 특성상 인에 들어간 path를 열어서 다 읽어오므로, 첫번째 인자에 FLAG를 주고 두번째 인자에 아무 파일이나 (없는파일도 포함) 주게 되면 

FLAG값이 읽히게 되는 문제였다.

(payload file= FLAG 1)

사실 2번문제로 Revenge! 라는 타이틀을 달고 나왔지만 똑같은 공격에 또 당한 문제였다.





Posted by Maid:: IzayoiSakuya

wargame.kr pwcrack

2014.11.01 06:54

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.