본문 바로가기

WARGAME/Pwnable.kr

pwnable.kr simple login

소스를 아~~주 간략히 소개하자면 입력한 값을 base64로 디코딩하고

그 값이 md5 해쉬값과 같다면 correct를 실행하는건데

일단 12바이트를 넣어봤다.


이렇게 12바이트를 base64로 인코딩하고


그 값을 넣어준다.


EBP를 보면 마지막에 넣은 4바이트로 EBP가 설정된 것을 볼 수 있다.

그럼 이걸 이용해서 우리의 목표인 correct 함수를 실행해보자.


끝부분을 corret함수로 설정해보았다. correct의 주소는 0x0804925f인데 

ebp에 설정되니 -4값인 5b를 넣어주고 실행해 봤다.


ASLR이 걸린 상태여서 저부분을 바로 correct로 설정할 수 없다.


고정값을 사용하고 있는 bss의 input을 사용하도록하자.

즉 ebp를 문자열 입력 시작부분으로 덮는 것이다.


이렇게 값을 넣고 실행해보면


EIP가 가운데 4바이트로 설정되는 것을 알 수 있다.

EBP값을 설정했기 때문에 pop ebp를 하면서 4바이트가 증가된다.

그래서 input값에 4바이트를 더한 EFGH를 가르키게 된다.

그렇다면 가운데 4바이트를 원하던 correct 함수로 변경해보면


input값을 비교하는 부분에서 막히게 된다

우연히도 앞에 4자리가 저 값을 나타낸것을 알 수 있는데


[0xdeadbeef] [corret()] [input]

이렇게 작성하면 /bin/sh를 실행할 수 있다.


하지만 애초에 가운데 4바이트를 시스템 함수로 설정하면 

그냥 앞에 4바이트는 아무값을 넣어도 상관없다.






'WARGAME > Pwnable.kr' 카테고리의 다른 글

pwnable.kr dragon  (0) 2017.01.11
pwnable.kr coin1  (0) 2017.01.09
pwnable.kr simple login  (0) 2017.01.06
pwnable.kr passcode  (0) 2016.03.29
PWNABLE KR ascii_easy  (0) 2016.03.28
PWNABLE KR uaf  (0) 2016.03.24