pwnable(115)
-
HACKCTF - Yes or no
18.04기준으로 테스트 되었다는데 나는 16.04를 써서 설마 안되겠어 하는 마음으로 일단 했다 ㅎ 실행시켜보면 위와 같이 숫자 넣으라고하고 아니라고한다. 이부분에 대한 코드를 확인해보면 34번줄에서 어떠한 조건에 충족되면 다시 gets를 한번 받는데 이부분에서취약점에 발생할 확률이 높아 보인다. 해당 부분에 들어가기 위해서 어떤 숫자를 입력해야할지 디버깅을 통해 확인해보겠다. main+249하고 main+266에서 puts, gets를 call하는데 두개를 동시에 call하는 부분이 이 프로그램에선 저부분 밖에 없으니 main+237에 bp를 걸고 값을 확인해보겠다. rax를 보면 0x96000이 들어있고 이를 똑같이 맞춰주면 조건문에 알맞게 처리되서 "that's cool~~"멘트를 확인 할 수 있..
2020.08.27 -
Dreamhack - master_canary
보호되어 있는 글입니다.
2020.08.24 -
HACKCTF - Pwning
해당 nc에 접속하면 몇바이트를 입력 받을지 받은 다음, 해당하는 글자 수 만큼 입력을 받는 것을 볼 수 있습니다. 해당 부분을 ida로 확인해보면 취약한 부분이라고 나오는데 get_n 으로
2020.08.23 -
HACKCTF - RTL_World
RTL을 활용해서 푸는 문제로 보이고, 파일하나를 주니 다운받아서 실행했습니다. 장문의 text형식 (case문) 의 문제 구성이군요. 3번과 4번을 보게되면 3번에서 sys함수주소를주고, 4번에서 binsh 주소를 줍니다. 12번줄 --> system주소 14번줄 --> /bin/sh 찾기 이렇게 두개의 함수를 얻으면 바로 exploit이 가능합니다. 취약점이 발생하는 부분은 5번을 누르게되면 입력받는 창이 나오는데 이 부분에서 bof가 일어나게됩니다. 익스플로잇코드는 dummy[0x8c] + sfp[0x4] + system주소 + dummy[0x4] + binsh주소 입니다. 초기에 돈을 많이 벌어둬야지 3,4번이 가능하므로 해당 코드도 추가하면 됩니다. 아래는 exploit코드입니다. 1234567..
2020.08.16 -
HACKCTF - g++ pwn
해당 gpwn프로그램을 실행하면 단순하게 입력을 받고 입력받은내용을 출력시켜주는 프로그램입니다. ida를 통해 함수를 봐보면 main함수에서 바로 vuln() 함수라고 알려주는데(취약한함수) 이 함수를 타고 들어가면 이럼 c++로 만들어진 코드를 볼 수 있습니다. 코드를 간략하게 이야기해보면 13번째줄에서 fgets를 사용하는데, 32바이트만큼만 받기떄문에 60바이트인 버퍼를 덮기는 턱없이 부족합니다. 그럼에 16, 18, 19번째줄은 해석해보면 "I" 라는 문자를 "you"라는 문자로 바꾸어주기 때문에 이부분을 이용하면 bof를 해서 ret변조가 가능할 것 같습니다. 즉 dummy[60] + sfp[4] + ret[4] 를 해주면 됩니다. ret주소는 위의 cat flag함수로 지정해줍니다. paylo..
2020.08.14 -
HACKCTF - Classic Cipher -2
해당 문제에서 주는 txt파일을 확인해봅니다. 필자인 저도 한번에 푼문제는 아니고, 검색하고 삽질하다가 일주일정도 다른문제랑 겸사겸사 해서 풀어보다가 드디어풀었습니다. 다음과 같은 텍스트가 있는데 예전 정보보호영재교육원에서 배웠던암호의 일종으로 key의 알파벳 순서를 정해주고, ciphertext를 key의 글자수만큼 나눠서이하는 푼제입니다. 아래 사진을 보면 풀이법은 이해 가실겁니다. 이렇게 풀이하면 flag 획득이 가능합니다 :)
2020.08.13