본문 바로가기
반응형

Security100

[MISC] DEFKTHON 2014 MISC200 문제 파일을 보면 0~255범위의 숫자 3개가 나열되어있어서 RGB라는 것을 느끼고 바로 코딩! #!/usr/bin/env python import Image, ImageDraw colors = [] W, H = 300, 204 i = 0 f = open("./flag.txt", "rb") img = Image.new("RGB", (W, H), "black") draw = ImageDraw.Draw(img) #문제.txt.값들을 공정하는 과정 for j in f.readlines(): r, g, b = j.split(',') b = b.split('\n')[0] colors.append((int(r), int(g), int(b))) #가로, 세로로 색을 1픽셀씩 찍는 과정 f.. 2014. 3. 4.
[exploit] Sharif CTF 2013 exploiting 200 포맷스트링버그 취약점이 있는 프로그램입니다. readfile로 flag.txt를 읽고 strncpy로 저장하는 것을 볼 수있습니다. 저장된 공간은 0x804b0c0 바이너리에 저장된 것을 볼수 있습니다. 클라이언트측에서 %p %p %p를 입력하니 스택에 쌓여있던 주소가 출력되었습니다. 앞에서 출력 형식을 지정해주면 그 뒤에있는 인자들이 1대1 대응으로 해당 값이 출력됩니다. 포맷스트링에서 형식 인자 사이에 [숫자$]을 입력하면 출력될 인자에서부터 숫자만큼 떨어져있는 값이 출력됩니다. 이게 포맷스트링버그인데, 포맷스트링 버그를 이용하여 바이너리에 박혀있는 flag.txt를 읽어오면 됩니다. 알고 있어야 할 정보는 flag.txt가 저장된 위치와, 출력하려는 스택의 위치인데, flag.txt저장위치는 위에서.. 2014. 2. 27.
[exploit] Sharif CTF 2013 exploiting 100 2013년 Sharif Universe에서 열린 CTF.당시 코드분석을 할줄 몰라서 못풀었는데 요즘 공부할겸 다시 풀어보고 풀이올립니다. 이 문제는 exploit이라기보다는 코드만 분석하면 풀리는 문제였습니다.read로 0x20만큼 유저에게 값을 입력받고 그 다음 0x33763167랑 비교를 하는데 비교하는 값이 read 바로 다음 버퍼에 저장되고, 이때 조건이 맞으면 flag가 출력됩니다. v7 = read(fd, &s, 0x24u); if ( v7 < 0 ) error("ERROR reading from socket"); if ( v6 == 0x33763167 ) { connection_gotflag(a2); v7 = write(fd, "Congratulations! here's the key: ",.. 2014. 2. 27.
[exploit] CODEGATE2014 4stone writeup 로컬 서버에 접속을 해서 컴퓨터와 4목을 두는 바이너리!! (이기는 로직을 알기 전까지는 컴터가 잘하더라구요ㅜㅜ 많이 졌음...ㄷㄷ) 다음 그림은 헥스레이로 분석한 소스인데요. 1차적으로 if( !v11 ), 게임을 0초만에 이겨야지 안쪽으로 진행할 수 있습니다. 그 다음은 a1, 즉 argc가 2개이면 scanf로 또 한번의 입력을 받는데 입력받은 값은 0x8040000과 0xB0000000 이 되면 안됩니다. eax : 2번째 인자로 입력한 값. edx : 게임에서 이긴 후 scanf로 입력받은 값 즉, argv[1]에 입력받은 곳에 edx를 입력합니다. Segmentation fault가 뜬 곳을 보면 0x5662015a로 리턴을 하려는 것을 볼 수 있습니다. 즉, [EAX]+ 0xbab04으로 r.. 2014. 2. 26.
728x90