write up 8

[plaid CTF] ropasaurusrex | write up

이번에는 제가 ROP를 처음 공부해볼때 풀어보았던 문제인데 한번 다루어 보겠습니다. 일단 먼저 표층분석을 해보면, 32비트에다 스트립이 되어 있습니다. 그리고 NX만 활성화 되어 있습니다. -> 쉘코드 사용 불가능 기본적으로 실행을 해보니 먼저 아무거나 입력을 받고 그 후에 WIN 이라는 문자를 출력을 해주네요! 그렇다면 ida를 이용해서 분석해보겠습니다. main 주소에서 sub_80483F4라는 함수를 실행시킨다하여 들어가봤습니다. 여기서 buf의 크기는 0x88이고, read에서 0x100의 크기를 입력받는다는 것을 알수 있습니다. 즉, bof가 터진다는것을 알수 있다는 것이죠. 여기서 제가 사용할 기법은 rop입니다. -- rop를 구성하기위해 구해야 할것들 -- 1. write의 plt와 got..

CTF write up 2019.09.25

[HackCTF] Unexploitable #1 | write up

이번에는 HackCTF 사이트에 있는 Unexploitable #1 문제를 풀어보겠습니다. 크으으.. 출제자 st4nw.. 저희 학교 선배이십니다! 저의 지식의 원천인 st4nw선배 쨋든 이제 본론으로 넘어가서 표층분석을 시작해볼게요..! 64비트에다 NX만 걸려있네요. 그럼 바로 ida로 분석해보겠습니다. 이건 main함수 입니다. 여기서 취약점이 바로 보이네요! fgets( ) 부분에서 bof가 터집니다 간단한 ROP를 이용하면 풀수 있는 문제로 보이지만, 사실은 불가능 합니다! "그러면 어떻게하나요?ㅠㅠ" 걱정 마십쇼! 다 방법이 있습니다! 저는 아주 간단하게 풀었습니다. (일종의 트릭을 이용했죠!) 제가 사용한것은 문자열 안에 있던 "sh" 와 gift( )함수 안에 있던 system( ) 함수를..

wargame/HackCTF 2019.09.01

[HackCTF] Basic_FSB | write up

안녕하세요 이번에는 HackCTF에 있는 Basic_FSB 문제풀이를 준비 해봤습니다. 문제이름이 basic_fsb인걸 보면 fsb를 이용하라는 얘기로 볼수 있겠습니다. FSB(format string buf) 는 printf 함수에서 주어진 포맷스트링을 이용하여서 메모리의 값을 참초하여 출력하거나, 어떠한 위치에 원하는 값을 덮어 씌울수 있는 아주 멋진 기술입니다! 자세한 설명은 나중에 더 다루어 보겠습니다. 이제 file 과 checksec으로 한번 분석을 해볼게요! 오오오! 깔끔하게 아무것도 걸려있지 않고 32비트 환경으로 돌아가게되네요. 그러면 이제 ida를 이용하여 보겠습니다. 프로그램을 실행시키면 먼저 stdout을 세팅해주고 vuln()이라는 함수를 실행시켜주는 줍니다. vuln() 함수안에..

wargame/HackCTF 2019.09.01

[HackCTF] ROP | write up

안녕하세요! 오늘은 HackCTF ROP writeup을 써볼겁니다! ROP( Return Oriented Programming ) 는 프로그램에 ASLR이 걸려있을때 활용하는 해킹 기법입니다. RTL 그리고 GOT overwriteR를 이용하여 프로그램을 내맘대로 실행하게 하는 기법이에요 프로그램이 실행되고 있는데 중간에 ROP를 사용하면 내가 원하는 함수를 원하는 인자로 넣고 실행 시킬수 있어요! 일단 문제를 확인해 볼게요! 오오! 여기 보시면 rop.zip을 주었네요? 한번 다운해서 확인해볼게요 바이너리 파일과 libc.so.6을 제공해 주었네요? libc.so.6을 줬다는건 이 라이브러리 소스를 이용해 offset 즉 상대주소를 이용해서 함수의 위치를 구하라는 얘기입니다. 사실 프로그램마다 사용하..

wargame/HackCTF 2019.08.29

[HackCTF] 내 버퍼가 흘러넘친다!! | write up

안녕하세요! 여러분들! 이번에는 HackCTF 내 버퍼가 흘러넘친다!! 라업을 준비해봤습니다 ㅎㅎ 일단 먼저 실행해보겠습니다 먼저 name이랑 input만 입력을 받네요. 그럼 한번 checksec이랑 file을 이용해 표층분석도 해보겠습니다. 잠깐! 모두 비활성화 되어있네요!! 근데 여기서 중요한건 NX가 활성화 되어있지 않다는것!! 그럼 쉘코드를 사용할수 있다는 것이네요 ㅎㅎ 그럼 이제 ida를 이용하여 어떻게 되는지 분석해 보겠습니다. 자 한번 보겠습니다. 변수 s의 크기 : 0x14 name변수에 0x32만큼 입력을 받고요, 그후, s변수에 또 입력을 받네요. 여기서 알수 있는점! name변수랑 s변수 둘다 입력을 받는다는 겁니다! 근데 보면 s는 무한대로 입력받을 수 있어서 s에 bof 를 일으..

wargame/HackCTF 2019.08.29

[pwnable.kr] fd | write up

안녕하세요! 이번에는 pwnble.kr 풀이를 준비해봤습니다! ssh fd@pwnable.kr 2222 로 접속을 하고 비번으로 guest 를 입력해줍시다! 전 xshell로 접속했어요 ㅎㅎ 보시면 3개의 파일이 있는데요, fd.c를 한번 보겠습니다. 오호라.. 일단 인자는 2개 이상 넣어주고, 제가 입력한 2번째 인자에서 0x1234를 빼고 그것을 fd라는 변수에 저장해주네요! 그리고 read함수를 이용해 buf에다 입력받고, 그것이 LETMEWIN이면 답이 나오는 문제네요! 이 문제는 파일 디스크립터에 대한 문제인듯 합니다. 파일디스크립터 자세히 알아보기 -> 링크 파일디스크립터 - Google 검색 2013. 3. 24. · 파일 디스크립터란 뭔가?! 파일 디스크립터는 파이프, FIFO, 소켓, 터..

wargame/pwnable.kr 2019.08.29

[HackCTF] Basic_BOF #2 | write up

안녕하세요! 이번에는 HackCTF의 Basic_bof #2의 풀이를 해드리겠습니다. 이것도 buffer overflow를 이용한 문제라고 하네요? 이것도 마찬가지로 file과 checksec을 이용해 분석해보겠습니다. 보시면, Basic_bof #1 이랑 비슷하게 32비트에다, 리눅스기반 그리고 스트립되어있지 않아요 그리고 NX가 걸려있어 셸코드를 사용하지 못해요. 그럼 ida로 한번 분석해볼까요? 이렇게 v5에 sup이라는 함수의 주소를 넣고, fgets를 이용해 s에 입력받고, v5안에 저장된 sup 함수를 실행하게 되네요! 흠… 그럼 이걸 어쩌지..? 하던 찰나에 왼쪽을 보았더니 수상한 이름의 함수가 떡하니 보였습니다. 오호라.. shell이라고??? 저는 호기심을 참지 못하고 한번 확인해 봤습니..

wargame/HackCTF 2019.08.29

[HackCTF] Basic_BOF #1 | write up

안녕하세요! 이번에는 HackCTF에 있는 basic_bof #1의 write up을 올려볼까 합니다. 처음(?) 라업인지, 되게 기대되네요! 그럼 바로 본론으로 넘어가겠습니다! 제목은 Basic_BOF 말하자면 기초적인 buffer overflow! 말그대로 버퍼가 넘친다 라고 보시면 되겠습니다! bof 에 대한 자세한 내용은 나중에 다시 다루겠습니다. 자… 그럼 바이너리 분석을 할까요? file을 이용해 표층분석을 해봤더니 32bit이고 리눅스 기반에다가 스트립되어있지 않습니다. 흠.. 보호기법은 NX랑 RELRO만 걸려있네요? 일단 우리가 신경써야 할건 NX부분이에요 즉, 셸코드를 사용할수가 없다는 것이죠 자 그럼 바로 ida를 이용해 분석해볼게요 흠.. 보니까 v5라는 변수가 0xDEADBEEF가..

wargame/HackCTF 2019.08.29