본문 바로가기

CTF

(37)
[Pwn] SimpleBOF ELF linux 어쩌고 하길래 Kali Linux에서 열어도 안된다... C++ 수업에서 복사생성자가 필요할 때 생기는 오류라고 했는데 C로 된 코드이지만 뭐... 넣어줘야 하는건가 싶어 코드를 이리저리 바꾸어 보았으나 오류를 고칠 수 없었다. 처음에 0이라고 초기화되었지만 gets로 입력받은 buf.check가 true면 cat ./flag 즉 flag를 보여준다. gets(char *buf) 함수는 표준 입력으로부터 문자열을 입력받아 buf에 저장하는 함수로 입력 길이를 검사하지 않기 때문에 버퍼 오버플로우가 발생한다는 취약점이 있다. 저기 위에 있는 링크로 접속해 256바이트 이상을 집어넣으면 flag를 얻을 수 있다. IDA 를 사용하거나, 디컴파일하거나 디스어셈블해서 어셈블리어를 보고 풀면 된..
[Web] Bottle Poem 링크를 클릭하자. 나의 병 속의 시들을 읽어라...? 일단 순서대로 링크를 타고 들어가보자. Spring. Auguries of Innocence. The tiger. 음. 그냥 아름다운 시... 같은데. 앞글자들만 다 따서 모으면 Flag 가 되는걸까... 어. tiger 시 행 뒤쪽에 숫자가 있는데 뭘까. 여기까지가 CTF를 풀며 내가 작성했던 것인데 당시의 당혹감이 아주 잘 드러나있다. 정말 손도 못 댔어서 다시 보니 굉장히 부끄럽다. Write Up에 따르면, /show?id=spring.txt 처럼 파일을 읽고 있는 느낌이 있으므로, /show?id=/etc/passwd 를 해 보면 빠져나올 수 있다. LFI 취약점을 찾아야 한다. 응답의 server: WSGIServer/0.2 CPython/..
[Programmig(PPC)] Let's Play Osu!Mania 1.in 파일을 열어보니... 당최 이게 뭔지를 모르겠다. 이건 같이 첨부되어있던 PDF 이다. sample에 있는 내용이 1.in 파일의 것과 같은 듯하다. 리듬게임인가? tap 노트가 내려오면 해당하는 올바른 키를 눌러 플레이한다. hold 노트가 라인에 도달하면 시작 노트를 때맞춰 두드리고 종료 노트에서 해제한다. 4K 비트맵이 주어졌을 때 개체(노트?)가 몇 개 있는지 계산해야 한다. 첫줄에 나오는 비트맵의 길이에 해당하는 정수 N은 10보다 크고 10000보다 작고, 다음 N줄에서는 비트맵을 설명하는데, 각 줄은 길이가 6인 문자열이고, 첫번째와 마지막 문자는 기호 | 이다. 나머지 4개의 문자는 스페이스, 하이픈(-), 샵(#) 셋 중 하나일 수 있다. 중복되거나 깨진 hold 노트는 없고, ..
[Rev] EasyXOR 파이썬 코드를 해석해보자. 0부터 flag의 길이, 즉 24까지 반복한다. 무엇을? append 즉 리스트의 끝에 추가하는 것을. ord는 문자를 넣으면 유니코드 정수를 반환한다. flag의 i번째 배열에 i승을 한 값을 집어넣었을 때...? 게다가 문제에는 XOR 연산에 대해 알아보자고 적혀있다. XOR 연산은 같으면 0을 다르면 1을 출력하는 연산 아닌가? 저 ^ 모양이 i 제곱이 아니라 XOR 연산을 나타내는 것이었을까? 유니코드로 저 주석에 달려있는 값이 나오게 하려고 chr로 다 문자로 바꿔서 넣어봤는데도 안된다. SWING{svkmc~~7zvr;~rw?enu `jb+f|w(p?>]} 라고 넣었었는데. 저 아래 출력된 값을 변환해서 넣어도 안된다. SWING{svkmc~9876543210/.-..
[Rev] Matrix Lab 1 다운받은 파일을 열어보니 이상한 문자들이 나온다. Olly Dbg 등 리버싱 툴에 넣어봤는데 달리 열리거나 뭔가 나타나지 않았다. 여기서 뭘 더 어떻게 해야할지 몰라 Write Up을 참고하였는데, 리버스 엔지니어링과 자바를 사용해야한다고 한다. 제공된 파일이 .class Java이었던 모양이다. java class decompiler online을 사용하면 되는 모양이지만 아직 자바를 안배워서 생소하다. public class Sekai { private static int length = 6; public static void main(String[] arrstring) { Scanner scanner = new Scanner(System.in); System.out.print("Enter the f..