반응형


자! RedTiger의 마지막 문제이다.

접속을 하면 Login 버튼이 있다.

누르면 하단에 보이는것처럼 안녕 원숭이(나 원숭이띠인줄은 또...ㅋㅋ)라고 뜬다.


목표는 TheMaster로 로그인을 하라고 한다.


Login 버튼을 눌렀을 때 파라미터를 보면 아래와 같이 날아간다.

login=YToyOntzOjg6InVzZXJuYW1lIjtzOjY6Ik1vbmtleSI7czo4OiJwYXNzd29yZCI7czoxMjoiMDgxNXBhc3N3b3JkIjt9&dologin=Login


딱 봐도 Base64로 인코딩된 데이터여서 복호화를 시도해보았다.

(login[]=으로 해서 날리면 Base64_decode 함수가 나오는 것을 통해서도 알 수 있다)


login 파라미터값을 복호화하면 아래와 같이 나온다.

a:2:{s:8:"username";s:6:"Monkey";s:8:"password";s:12:"0815password";}


대충 봐서 username이 Monkey이고 password가 0815password 임을 알 수 있다.

이 데이터를 통해 로그인을 할 것이란 것도 추측이 된다.


테스트를 해보기 위해 Monkey 대신 TheMaster를 넣고 Base64로 인코딩 후 전송시키면 아래와 같은 에러가 출력된다.


찾아본 결과 PHP serialize()와 unserialize()에 해당하는 문제였다.

먼저, serialize()unserialize()에 대해 설명하자면 serialize() 함수는 간단히 말해 GET과 POST로 넘어온 배열값을 직렬화(일렬화) 시키는 것이다, 이는 DB를 이용한 세션처리에 주로 사용되었던 함수이다. 추후 이 값들을 사용하기 위해서 사용하는 것이 unserialize()인 것이다.

[ php serialize 취약점 ] 이라고 검색하면 PHP Object Injection 이 나오는데 이는 이 serialize 함수 사용시 이용되는 magic functions들을 이용한 취약점이다.


이것에 대해 알아보다가 시간을 많이 쏟았는데 이 문제는 PHP Object Injection과는 다르다! (이 취약점을 통해서 LFI 취약점을 발생시킬 수 있다. 이는 추후 포스팅을 하겠다)


여기서는 단순히 Login Bypass가 목표이다. 따라서 방향을 다르게 잡았다.


PHP Serialize의 메뉴얼(http://php.net/manual/kr/function.serialize.php)을 잘 살펴본 결과 데이터 타입에 따라 string, int, boolean 등의 데이터가 존재하였다.


여기서 포인트는 데이터 타입에 boolean값이 있다는 것이다. 


SELECT * from 테이블 where id='아이디' AND pw='패스워드'


만약 위의 쿼리에서 id에 TheMaster가 들어가고 pw='임의의값' or 1=1이 들어간다면 pw의 최종 boolean값이 1이 되어 로그인 처리가 되어 로그인이 된다!


이걸 단순하게 생각하면 pw의 boolean값이 1이 되므로 로그인이 되었다는 점이다.


이를 이용하여 password의 boolean값으로 1을 주면 로그인이 되지 않을까라 생각하였다. (serialize()의 boolean은 true, false가 아니라 1과 0으로 저장된다)


따라서 아래와 같이 넣고 base64로 인코딩 후 전송시켜보았다. ( 자세한 serialize 데이터 형식은 http://chongmoa.com/php/6902 를 참고하였다 )


a:2:{s:8:"username";s:9:"TheMaster";s:8:"password";b:1;}



클리어~!


반응형

'Solve Problem' 카테고리의 다른 글

[Wargame.kr] dun_worry_about_the_vase  (0) 2018.05.02
[RedTiger's Hackit] 올클리어  (0) 2018.02.03
[RedTiger's Hackit] 9번 문제  (0) 2018.02.01
[RedTiger's Hackit] 8번 문제  (0) 2018.01.29
[RedTiger's Hackit] 7번 문제  (0) 2018.01.29
블로그 이미지

rootable

,