webhacking.kr 5번 문제(old)

2019. 10. 2. 00:04Wargame/webhacking.kr

5번문제의 메인 페이지

처음에 이 메인페이지를 보고 인젝션 문제인줄 알고 있었는데 join 을 막아놓아서 인젝션 문제는 

아닐 것 이라고 생각했습니다.

 

 

바로 login을 들어가서 아무 글자나 입력해보도록 합니다.

회원가입도 하지 않았고 아무글자나 입력했는데 wrong password 라는 문구가 보입니다.

우선 회원가입을 해야 할 것 같습니다.

 

그렇다면 메인페이지로 다시 이동한 후 join 페이지를 눌러 봅시다.

위처럼 권한이 없다고 경고장이 뜹니다.

 

그후 메인페이지의 소스를 확인해 보니

mem/ 이라는 디렉토리가 보입니다.

바로 mem/을 주소창에 입력해 줍니다.

역시 mem 디렉토리에 join.php , login.php 의 파일이 잇습니다.

하지만 우리는 회원가입을 해야하기 때문에 join.php 파일을 클릭해줍니다.

그럼 bye라는 명령어가 뜹니다.

!하지만 이전처럼 메인페이지로 가는게 아니라 현재 join.php디렉토리 안에 있습니다.

그래서 f12를 눌러서 소스를 확인해 봅시다.

이렇게 눈아프게 난독화 되어있네요 ;;;;;

이상하게 쓰여있는 부분을 대충 복사해서 크롬의 콘솔에 붙여 넣어서 복호화했습니다.

이 코드는 oldzombie 라는 쿠키를 만들고 주소뒤에 mode=1 을 해주면 join 페이지로 이동 할 수 있어 보이지만!

살짝 꼼수를 쓴다면 

 

if(eval(llll+lllllllllllllll+lll+lllllllllllllllllllll+lllllllllllll+lllll+llllllllllllll+llllllllllllllllllll+li+'U'+'R'+'L').indexOf(lllllllllllll+lllllllllllllll+llll+lllll+'='+I)==-1){alert('access_denied');throw "stop";}

else{

');}

위와같은 부분이 있는데 우리가 join 페이지에 들어가려고 시도 했을때 access_denied라는 경고창이 떳기 때문에 

저 if문에서 걸렸다고 예상할 수 있습니다.

그래서 저 if문이 실행이 안된다면이라는 뜻인 else 문 안에 있는 코드를 복사해서 console창에 넣어주면?

이러한 페이지가 생성되게 되는데 이제 아이디를 만들어서 회원가입을 한 후 로그인을 시도해 봅시다.

123 이라는 계정을 만들고 로그인을 시도했더니 

admin 이라는 계정을 만들어서 로그인을 하라고 하는군요

그래서 어드민이라는 계정을 회원가입하러 다시 가봅시다.

하지만 id가 이미 있다고 하는군요 

이 회원가입을 성공해야 문제가 풀리는 것 같습니다.

 

그래서 저는 회원가입을 할 때 

id:'                    admin      '

pw:'1234'

이렇게 적어 주었습니다.

'는 치지마시고 그안에 있는 공백과 문자열을 복사해서 

                    admin      

를 아이디로 만들어 주세요.

이렇게 아이디를 만든 후에 로그인을 하면??

5번문제 클리어~

이렇게 5번문제의 풀이를 마치겠습니다.

확실히 이번 문제가 전의 문제보다 난이도가 어려워졌습니다.

더더욱 공부를 해서 웹해킹 빡고수가 되어 봅시다.