시스템 3

[Pwnable.xyz] note

note #got_overwrite #BOF 바로 들어가보자. 파일은 일반 ELF 파일이다. 별다른 점은 없다. main 함수를 보면 메뉴번호를 고를 때 read_int32 함수를 통해 번호를 전달받는다. 이는 얼마안가서 취약점을 촉발시키는 매개가 되는데, read_int32 함수를 알아보자. 이 함수를 보자마자 눈여겨봐야겠다고 느낀게 문자열 형태의 숫자 를 atoi로 정수 로 바꿔주고 있었기에 얼마나 큰 수를 입력해도 검증과정없이 정수로 바꿔주는 과정이 조금 이상해보였다. 뭐 결론적으론... 좋은 발견이었지만. 그리고 1번 메뉴를 선택하면 edit_note 함수로 들어오는데 모습은 이렇다. 이 부분에서 read_int32 함수의 좋은 기능을 활용할 수 있는데, 일단 s 는 전역배열로 선언되어있는 32바..

[System32.kr] Warm Up

Warm Up #pwnable #system32.kr #file descriptor 새로운 워게임 사이트를 찾았다! 암호학 위주여서 매우 관심이 간다 ㅎㅎ 첫 단추를 어떤 문제로 풀어볼까 하다가 Warm Up 이라는 pwnable 문제를 찾았다. 파일 디스크립터를 이용하는 문제 같다. 처음에는 파일 디스크립터를 overwrite 하는 종류의 문제인가 했으나 의외로 간단했다. 다만 strip 이 적용된 상태라 glibc 함수들을 일일히 인지하고 복구하는 과정에 약간의 난항이 있다. 우선 위처럼 메뉴가 주어지고 특정 파일을 open하고 읽거나 삭제할 수 있다. 디컴파일 해보니 31337 이라는 숨겨진 커맨드가 있었다. 이 함수는 /home/strange_file/flag 파일내용을 임의의 string 테이블..

[Hack.lu 2019] no_risc_no_future

no_risc_no_future #mips #pwn ※ 원본 Write Up : https://github.com/goseungduk/CTF_WriteUp/tree/master/Hack.lu_2019/pwn/no_risc_no_future제목 그대로 risc 형식의 mips 아키텍쳐로 된 바이너리에 대한 pwnable 문제이다. Ghidra로 열어본 바이너리는 이런 모습이다. 64바이트짜리 배열에 256바이트를 입력할 수 있게 해준다. 그리고 입력한 버퍼를 출력시켜준다. 그리고 Canary 외에는 별다른 보호기법도 걸려있지 않는 것으로 보아, buffer overflow 이후, 쉘코드를 이용하여 쉘을 얻어내면 될 것 같다. 대강 순서는 이러하다. 1. puts 함수를 이용해서 canary를 leak 2...

<보안 study>/CTFs 2019.12.21
반응형