본문 바로가기
반응형

Security/[게임] CTF 풀이56

[Reversing] DEFKTHON 2014 Reversing100 위의 프로그램을 클릭하면 msgbox가 뜨는 형태의 프로그램입니다. 위 프로그램은 .NET Reflector로 쉽게 접근할 수 있었습니다!! 우선 밑에는 초기화부분 ~ Click을 하면 이벤트가 발생되는것 외에는 따로 하는 일이 없네요! 근데 노란색 줄을 보시면 "key is md5(sha1)"이 보이는데 일단 알아두고 다음 함수를 보시죠. Userhint()부분인데 "get_key_from_hint"가 보이네요. 힌트에서 key를 얻어라는데 위에서 봤던 key is ~가 힌트가 될듯 합니다!! 마지막으로 메인부분! 예외처리로 되어있고 당연히 Int.Parse()부분에서 예외가 발생하여 프로그램은 죽게됩니다. 여기서 코드를 바꿔보기도 했는데 아무것도 안되더라구요... 근데 Int.Parse()안에 노란줄.. 2014. 3. 4.
[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.
728x90