CTF Write-Up
-
[TJCTF 2019] Slice of PIE write upCTF Write-Up 2019. 4. 18. 11:36
PIE에 관한 문제입니다. PIE란? Position Independent Executable의 줄임말로, 전체가 위치 독립 코드로 이뤄진 실행 가능한 바이너리입니다. PIE는 위치 독립 실행파일이고, 실행할 때마다 매핑되는 주소가 어디든지에 상관없이 시행되는 파일로, 바이너리의 주소를 랜덤화 하여 바이너리의 특정 주소의 값을 수정하는 것과 같은 공격을 방어합니다. Ref : https://bpsecblog.wordpress.com/2016/06/10/memory_protect_linux_4/ 풀이를 위해 어떤 파일인지 알아봅시다. 해당 바이너리는 NX, PIE, Full RELRO가 걸려있습니다. 또 stripped되어있어서 심볼이 삭제되어 있습니다. 다음으로 디컴파일을 해보겠습니다. main()에서 ..
-
CBM CTF 2019 write upCTF Write-Up 2019. 4. 10. 01:10
첫번째 pwn1번 문제다. 64bit 바이너리, NX와 PIE가 걸려있고 readme 파일을 읽었을 때 remote로 접속해서 쉘을 따야한다. buf에 getnumber의 return값과 같은 값을 넣어야하는데 get number()로 가보면 다음과 같이 고정적인 값을 return 해준다. 따라서 input값을 넣어주면 끝 %d로 입력받으니까 10진수로 넣어줘하는 것만 생각해주면 된다. 다음으로 푼 문제다. 64bit 바이너리, 역시 remote 익스해야한다. mitigation은 NX, PIE가 걸려있다. 헥스레이로 디컴파일 결과 print_flag()가 있고 이 함수가 호출되면 flag가 출력된다. 이 함수가 호출되기 위한 조건을 보면 v4 + v5의 값이 152보다 작거나 같아야하는데 첫번째 if문..
-
RITSEC CTF 2018 ezpwn write upCTF Write-Up 2018. 11. 19. 18:47
라즈베리파이 Mate ubuntu 가 apt upgrade를 하던 중 너무 오래걸려서 할게 없었는데 마침 CTF를 하고 있었네요..ㅎㅎ 쉬는 시간에 한 문제 풀었습니다! 210 Solves라 쉬운 문제였습니다. 문제는 바이너리 던져주고, remote exploit을 해야하는(?) 그런 문제 유형이였습니다. 먼저 정적분석을 위해 binary를 열어보니 다음과 같이 unsigned int v6의 값이 1이 된다면 if문의 조건을 충족하여 flag를 열어주는 것을 볼 수 있습니다. 취약점이 쉽게 눈에 들어오는데요. gets()의 사용으로 인해서 v4의 변수에 argv값을 NULL byte가 오기 전까지 모두 값복사를 하기 때문에 bof가 터집니다. 이제 이에 맞게 payload를 작성하면 됩니다. CTF에 나..
-
DEFCON CTF Qualifier 2018 ghettohacker:Throwback write upCTF Write-Up 2018. 5. 15. 04:38
ghettohacker:Throwback write up 궁금해서 write up을 보고 풀어보았다. 근접했지만 풀지 못한 아쉬운 misc 문제다. text 라는 이름의 파일이 주어지는데 먼제 hex dump를 떠봤다. Anyo!e !ho would sacrifice po!icy for execu!!on speed think !security is a comm!dity top !urintoasy!tem!. 아스키코드 부분에 Anyo!e 라는 단어를 시작으로 쭉 문자열이 나열되어있어서 !에 해당하는 문자를 채워줘봤다. Anyone who would sacrifice policy for execution speed thinks security is a commodity top our in to a syste..
-
Pico CTF 2013 ROP2 write-upCTF Write-Up 2018. 3. 10. 16:40
Pico CTF 2013 ROP 2 문제를 풀이했다. [바이너리] 메모리 보호 기법 확인을 해보면 이렇게 Partial RELRO 와 NX가 걸려있는것을 확인 할 수 있다. 실행을 했을때 rop1 과 동일하게 Hello, World 만 뱉어준다. [Think-1]메모리 보호 기법중 NX 가 걸려있으므로 쉘코드를 스택에 올려서 쉘을 띄울 수는 없다.또 Partial RELRO가 적용되어서 .got를 제외한 섹션은 Read-Only 이다.ASLR은 자체적으로 걸어두었다. 바로 정적분석을 위해 IDA로 열어봤다. main() 의 모습이다.저 중 vulnerable_function() 가 있는데 주석을 달아놓은것 처럼 140byte를 입력하면 SFP가 덮이고, overflow가 일어난다. vulnerable_f..
-
Pico CTF 2013 ROP1 write-upCTF Write-Up 2018. 3. 8. 23:58
좀 더 쉬운 ROP 문제를 풀어보기 위해 Pico CTF 2013 rop1이라는 문제를 풀어보았다. [바이너리] 먼저 메모리 보호 기법을 확인해보면 NX bit 가 걸려있고, Partial RELRO가 걸려있다. NX bit로 인해서 Stack에 실행 권한이 없기 때문에 내가 아는 쉘코드를 이용하는 방법은 할 수 없다.Partial RELRO는 got 섹션을 제외한 섹션에 읽기 권한을 걸어주는 기법이지만got는 제외되기 때문에 GOT Overwirte를 할 수 있다. 정적분석을 위해 IDA로 열어본다. 먼저 main() 을 확인해보면 간단하게 두 함수를 호출하고, vulnerable_function() 이 눈에 띈다. 어떤 함수인지 확인하기 위해 보면 bof 취약점이 존재한다는것을 확인할 수 있다. ch..
-
Plaid CTF 2013 ropasaurusrex write-upCTF Write-Up 2018. 3. 6. 06:57
Plaid CTF 2013 ropasaurusrex 라는 문제를 풀어봤다. 먼저 정적분석을 위해 IDA로 열어본다. 먼저 main()를 살펴보면 어떤 함수를 호출하고 write()를 호출하여 win\n 이라는 문자열을 출력해주는 것을 볼 수 있다. 그 어떤 함수에 들어가 보면 바로 취약점을 찾을 수 있는데,이는 char buf 가 bp-88 즉, 136 byte의 공간을 할당 받았지만, 바로 밑 read()에서 256 byte를 입력받게 되어있기 때문에buffer overflow 취약점에 해당된다. 여기까지 정적분석을 마쳤으니 동적분석을 해보자. 먼저 실행을 해보면 예상처럼 입력을 받고, win이라는 문자열을 출력해준다. 그리고 memory 보호기법을 확인 해보면 NX bit 만 걸려있었다. 이는 쉘코드..