HackCTF(78)
-
HACKCTF - Strncmp
해당 문제를 ida로 까보면 변수가 굉장히 많은것을보아 xor연산을 할 것으로 보인다. 자세히 보면 65번 줄의 strcmp_ 가 우리가 아는 strcmp가 아니라 _ 가 붙은 재정의한 함수임으로 확인이 필요하다. 8~9번째줄은 무슨의미인지 모르겠고, key랑 xor하는 것을 보니 key를 찾아야겠다. 보면 public이므로, 어디에선가 쓰이는데 마침 함수명쪽에 check라는 의심되는 함수가 있어서 이를 확인해보았다. 여기를 보면 v3에 대한 이차방정식이 있는데 7을 넣으면 참이되니 key를 7로 알 수 있다. string을 구했고, xor할 key를 모두 구했으니 복호화만 하면 된다. 코드는 아래와 같다. 1 2 3 4 5 6 7 arr = [0x4f, 0x66, 0x64, 0x6c, 0x44, 0x5..
2020.08.27 -
[보호]HACKCTF - Classic Cipher -4
보호되어 있는 글입니다.
2020.08.26 -
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 - Look at me
lookatme라는 파일 하나를 받을 수 있고, 해당파일을 실행시키면 이렇게 He~~를 출력하고 입력 하나를 받습니다. ida로 까보니 함수가 너무 많아서 확인해보니 statically linked 여서 대부분의 함수가 포함되어 있을것으로 예상됩니다. 다시 돌아가서 메인을 보면 gets에서 길이제한을 두지 않으니 이부분에서 취약점이 발생한다고 볼 수 있는데 직접 flag를 출력해주는 함수도 없고, nx도 있으니, 스택에 직접 쉘코드를 입력하는것은 어렵고, bss에 /bin/sh를 넣고, 리턴을 변조해서 system으로 실행시키는 쪽으로 가려고 하였으나, system함수가 존재하지 않네요.. 예전에 https://err0rless313.tistory.com/entry/mprotect-%ED%95%A8%EC..
2020.08.12