목록CTF (23)
y0u_bat
[2016] EKOPARTY PWN25 Ultra baby (pwn, 25 points, solved by 261) nc 9a958a70ea8697789e52027dc12d7fe98cad7833.ctf.site 55000 이문제는 bof를 해서, 함수포인터를 조작하여 flag라는 곳으로 실행시키면, 플래그를 뱉는 문제이다. 함수포인터를 1바이트 조작 할 수 있게 되는데, 이걸 이용해서 Flag함수가 실행 되겠끔 하면 된다. from socket import * HOST = "9a958a70ea8697789e52027dc12d7fe98cad7833.ctf.site" PORT = 55000 def recvuntil(t): data = '' while not data.endswith(t): tmp = s.re..
[2016] EKOPARTY PWN100 My first service I (pwn, 100 points, solved by 129) Blacky is taking his first steps at C programming for embedded systems, but he makes some mistakes. Retrieve the secret key for access. 한줄요약: 바이너리를 안주는데, 포맷스트링버그가 있을가 해서 해보았더니 됬다. %x로 릭을 하니 flag가 나왔다.
HDCON System Q.3-1 풀이 엄청 쉬운문제이다. 요약: 오버플로우해서 조건맞추고, 플래그를 담고 있는 ptr 경계선인 null를 덮어서 send할때 플래그까지 출력시키자!
[CodeGate2015] BookStore 풀이 보호기법이 모두 걸려있다. 구조체 모양은 이렇게 생겼다. 처음에 famous_saying.txt 파일을 읽어온다.그다음 아이디와 패스워드를 검사한다. 이 함수 내부를 보면 파일을 읽어와서 printf로 출력해준다. 아이다를 뒤지다 보면 함수포인터를 2개 쓰고 있는걸 볼수있다. 이 함수 포인터를 파일을 읽는 함수로 덮고 쓰면 될거같다고 생각했다. 그런데 PIE환경이라 함수의 주소가 랜덤이다. 그래서 함수의 주소를 leak한다음 함수의 베이스주소를 구한다음 베이스주소 + file_read 함수의 오프셋 = file_read함수 이런식으로 구해줘야 된다. view를 보면 shipping이 1일때 func2함수포인터가 인자로 bookname 쓰고 함수를 호출한다..
[Plaid CTF 2014] pork 풀이! 저 함수를 보면 pork라는 계정이 있는지 확인한다. 그러므로 pork라는 계정을 추가 시켜줘야 된다. 그리고 sscanf로 입력한다. clienterror부분을 보면 저기 sprintf에서 buffer overflow가 일어난다. s 는 ebp-458이므로 sfp전까지가 0x458 = 1112바이트이다. 그런데 여기서 우리가 s에 입력하기전에 위 sprintf로 먼저 s에 내용을 채워주고 있다. 그러므로 우리가 입력하기전에 입력된것을 빼기위해 len해서 보면 92가 나오는걸 볼수있다. 전에 입력한걸 빼보면 1112 - 92 = 1020 즉 버퍼는 1020다. buffer 1020 | sfp 4 | ret 4 처음에는 그냥 nx가 안걸려있길래 read로 쉘코..
[CodeGate 2013] vuln200 풀이 여기 보면 처음에 메뉴에서 buf에 400바이트 입력받을수 있다. sub_8048eeb 함수에 첫번재 인자로 buf를 넘겨주고 2번재는 fd , 3번째는 buf에 입력한 길이를 넘겨준다. sub_8048eeb함수를 보면 memcpy에서 버퍼오버플로우 취약점이 터지게 된다. 우선 저기로 갈려면 메뉴에서 write을 입력해줘야된다. write + 페이로드 이런식으로 하면 되는데 저기 memcpy 보면 아까 입력한 버퍼값 +5부터 dest로 복사된다. 즉 write가 5글자니 그뒤 페이로드부터 복사된다는 뜻.! 이제 간단히 bind shellcode로 하던지 rtl로 하던지 하면 된다. from socket import *from struct import *fr..
Piaid CTF 2013 Ropasaurusrex 풀이 아이다로 바이너리 파일을 보면, 한눈에 바로 취약점이 보인다. 버퍼는 136바이트 페이로드. 간단히 ROP하시면 됩니다. 클리어! from socket import *import structimport time p = lambda x: struct.pack("
[CodeGate2014] nuclear 뉴클리어 풀이 buffer over flow 취약점이 start_routine 함수 안에 있으며, launch 하고 start_routine가 실행된다. launch할려면 패스코드가 필요하다. 메모리릭을 통해 패스코드를 구해준다. 간단히 s1,v4,v5만 꽉 채우면 메모리릭 되서 s(패스코드)를 볼수있다. 그다음 버퍼오버플로우 취약점을 찾았으니, 간단히 ROP하면 된다. 끄읏.!!
순천향대 YISF Misc 50 롸업(풀이) 이건 거져주기 문제이다. 힌트에서 다 알려줬다 힌트 1. gps 2. 위성지도 3. http://regex.info/exif.cgi 4. 위성지도의 알파벳 조합 이미지 분석사이트같다. 저기 파일 img1을 올려보았다. 그다음 위성지도를 한번 보았다. P가 보인다. 그리고 그뒤에 2번이미지 3번 4 번 ,.. . . . 11번까지 해서 알파벳을 순서대로 구한뒤 나온 알파벳 순서대로 대문자로 입력하면 풀린다. PEACEOFMIND 이렇게 나온다. 클리어
순천향대 YISF Reversing 50 롸업(풀이) , 와업 실행해보았더니 입력하는부분이 있어 입력해서 클릭 누러보았더니 fail이라고 뜨면서꺼진다. c#이라는 프로그램이라는걸 툴로 알게되고 디컴파일 해보았다. 디컴한부분에서 배열로 여러개가 써져있고 수상한 for문이 돌아가는걸 보았다.이 프로그램이 키값을 출력할건데 분명 어디서 키값을 만들어낼거다. 그런데 이부분이 가장 의심스러워서 소스를 복붙하여 코딩해보았다. 여기서 public string o 함수 인자에 저런값을 넣는걸 보아 저것두 키값과 관련된거로 생각되어적었다. 이런식으로 코딩해서 컴파일했더니 바로 켜졌다 꺼진다. 그래서 한줄씩 디버깅해보았다. 한줄씩 하다보니 s에 무엇이 들어가는지 알 수 있게 되었다. 클리어