System&Write up/CTF 26

[Codegate 2018] BaskinRobins31

[Codegate 2018] BaskinRobins31 -Jubil(|BAOBOB|) 64bit 바이너리이고, canary가 없습니다. main 함수입니다. 일단 소켓이 아니기 때문에 socket descriptor가 아닌 stdin과 stdout으로 입출력을 해줍시다. 밑에 Hint는 ROP라고 나옵니다.그리고 베라 게임 이기려고 하면 규칙을 어기고 숫자를 4개씩 불러버립니다. 하지만 신경 쓰지 말고 저희가 입력할 수 있는 함수, your_turn을 분석하겠습니다. 그냥 read에서 BOF가 터집니다.쉽게 취약점을 구했으니 ex 코드를 짜러 갑시다. 일단 0xb0(176)에 SFP(8)을 고려하면 return address는 184byte 뒤에 있을 것입니다. 64bit 리눅스에서는 RDI : 첫번째 ..

System&Write up/CTF 2018.02.09

[Codegate 2014] nuclear

[codegate_2014] nuclear (이 문제는 예전에 풀다가 놓고 다시 잡은 문제라서 코드나 여러 부분에서 불편함을 느끼실 수 있습니다. 양해 부탁드립니다.) 바이너리는 이렇습니다. 무슨 문제였을 지는 모르지만, 1129 포트로 소켓을 연결합니다. start_routine 함수에서, BOF 취약점이 발생합니다. 그래프로 따라 올라가보면, launch 명령을 입력하고, passcode를 맞췄을 때 호출하는 함수 속에, 있는 것을 확인 할 수 있습니다. 그럼 passcode를 일단 알아내야 합니다. passcode를 읽어서 변수에 저장하길래, 변수의 이름을 passcode로 바꿔줬습니다. 스택에는 이렇게 쌓입니다. v4, v5[4] 모두 0으로 초기화 되었습니다. s1을 %s로 출력합니다. “> “..

System&Write up/CTF 2018.01.31

[HDCON 2013] luckyzzang

[HDCON 2013] luckyzzang Binary는 이렇습니다. canary는 없네요. 포트는 7777번으로 연결해줍니다. 들어가면 MSG를 입력 받고 종료됩니다. 입력 받는 부분을 보면 BOF가 터집니다. 하지만 v2 % 100의 숫자가 클 때 공격이 성공할 것 같습니다. 바이너리에 system 함수가 없으니 ROP를 이용해서 system 함수의 주소를 구하고 리버스 커넥션으로 exploit 하겠습니다. buf과 Return address의 거리는 0x408 + 4입니다. 입출력으로 send, recv를 이용할 것이니 ppppr gadget을 구해주겠습니다. pppr : 0x080489cc send 함수와 system 함수의 차(offset)을 이용해서 exploit할 때 system 함수의 주소..

System&Write up/CTF 2018.01.30

[Codegate 2014] angry_doraemon

[Codegate 2014] angry_doraemon angry_doraemon 문제입니다. main 함수에서 8888 포트로 연결하네요. 이렇게 6가지의 Attack menu가 나옵니다. 여러 메뉴들을 입력해봤는데, 5. Fist attack에서 r을 입력하면 special attack이 나옵니다. 분석해봅시다. 이 부분인데, 4byte 받아서 call 해주지만 chaining을 못하고, 그것보다 맨 앞 바이트가 \x08이 아닌지 필터링합니다. 즉, plt를 쓰지 못 합니다. 안타깝지만 일단 pass 하겠습니다. 또 의심 가는 부분이 있습니다. 제가 뭘 선택했는지 알려줍니다. 개행 문자 때문에 출력도 이상하게 되는데… canary leak의 냄새가..? read 0x6E. BOF 취약점입니다! 일단 ..

System&Write up/CTF 2018.01.30

[Codegate 2017] babypwn

[Codegate 2017] babypwn 일단 소켓 연결을 하는데 포트번호를 8181번으로 연결해줍니다. 그리고 바이너리에는 canary와 nx가 걸려있습니다. 들어가보면 Echo 기능은 입력을 받고 그대로 출력하는 것입니다.Reverse Echo 기능은 입력을 받고 거꾸로 출력하는 것입니다.Exit 기능은 나가는 것입니다. 이제 함수를 분석해보겠습니다. main의 sub_8048B87() 함수를 보겠습니다. 저 함수 3개를 분석하겠습니다. 1번째 함수는 처음에 환영글을 출력하는 함수입니다. 그럼 2번째 함수를 분석하겠습니다. 여기가 중요 함수입니다. 3번째 함수는 이걸 출력해줍니다. 2번째 함수를 보면, 어머 Echo와 Reverse Echo 모두 BOF가 발생합니다. 여기서 v2는 bp-0x34지만..

System&Write up/CTF 2018.01.29

[Pico CTF 2013] overflow5

[PicoCTF-2013] overflow5 이번에는 NX가 걸려있어서 셸코드를 올려서 실행하는 건 힘들 것 같습니다. vuln 함수입니다.v2의 시작 주소는 ebp-0x40c이고, strcpy 함수의 BOF 취약점으로 인해 return address까지 변조할 수 있습니다. esp+0x420가 첫 번째 파라미터이니, esp+0x41c가 return address입니다.esp+0x10이 buf의 시작주소이기 때문에, buf의 시작 주소와 return address의 거리는 0x40c(1036)입니다. 실제로 확인해보겠습니다. 이렇게 return address를 변조할 수 있다는 것을 확인했습니다. RTL을 이용해서 system 함수를 호출해서 인자에 “/bin/sh”를 넣어주도록 하겠습니다. 하지만 “/..

System&Write up/CTF 2018.01.18
반응형