전체 글 27

[HackCTF] Unexploitable #2 | write up

이번에는 HackCTF Unexploitable #2 문제를 풀이해보겠습니다. 엄청 오랜만이네요, 벌써 3달만에 글을 쓰는것 같습니다. 앞으로는 꾸준히! 글을 올려야 게써여 ㅎㅎ Unexploitable #2 인것을 보니 Unexploitable #1 다음 버전인듯 합니다. 표층분석을 해보니 64비트 기반에다가, 보호기법 NX만 활성화 되어있네요. 그리고 ida로 코드를 분석해 보겠습니다. 간단하게 s변수에 0x40만큼만 입력을 받네요. 흠... 지금까지 보아서는 도데체 어떻게 하지? 라는 생각이 드는데, 출제자가 저희를 위해 선물을 하나 준비했네요! 바로 gift함수 입니다. 한번 볼까요? use this system gadget :D 라고 합니다! 즉, system의 plt를 저희에게 주겠다는 의미죠..

wargame/HackCTF 2019.12.22

나의 두번째 자작곡

나의 첫 자작곡을 만들고 난후, 난 fl studio에 중독이 되어버릴 뻔했다. 난 꾹 참고 몇달을 버텼지만,, 결국 시험기간에 fl studio로 음악을 만들게 되버렸다 ㅠㅠ 흐어어얽.. 정신 차려야되는데.. 쨋든 만들긴 했으니 올려봅니다! 근데 이번건 뭔가 엄청 잘만들었어요 ㅎㅎ 중독성 완전 대박입니다! 거의 완성된 곡인데, 그냥 이름 바꾸기 뭐해서, 그냥 이름 안바꿨어요 ㅎㅎ 꼭 들어보세요! 이번에도, 후회하진 않을 겁니다! 후후후..

일상, 활동 2019.11.05

libc-database 사용해보기

github에 들어가서 libc-database라고 검색해보자. 자세한 설명은 이곳에 나와있습니다. https://github.com/niklasb/libc-database niklasb/libc-database Build a database of libc offsets to simplify exploitation - niklasb/libc-database github.com # libc-database 설치 방법 위 링크에서 참고하시면 됩니다! # libc-database를 사용하는 이유 우리가 ctf문제를 풀다보면 이러한 어려움에 직면할때가 있습니다. 예를들어, ROP를 해야하는데 libc파일을 주지 않을때가 있어요. 보통 우리가 바이너리파일을 받으면, 주최측 서버에서 돌아가는 libc와 내 pc에서..

studies/pwnable 2019.10.23

[Format String Bug] 포맷스트링 버그 (fsb) - 1

이번 시리즈에서는 포맷스트링 버그를 이용한 공격방법을 배워볼건데요 그 전에 먼저 포맷스트링에 대해 알아봅시다. 1. 포맷스트링 포맷 스트링은 우리가 주로 사용하는 c언어에 있는 printf함수에서 사용되는 것입니다. 이 코드를 봅시다. 1 2 3 4 5 6 7 #include int main() { int a = 0; printf("%d" ,a); return 0; } cs 여기에서 사용되는 이 "%s"가 바로 포맷스트링입니다. 즉, printf의 인자에 대응해서 그 인자의 자료형에 맞게 포맷스트링을 지정해주어서 출력해줄수 있습니다. 포맷스트링은 대표적으로 이러한 것들이 있습니다. 인자 입력 타입 출력 %d 값 일반적인 10진수 %s 포인터 포인터에 위치하는 문자열 %x 값 16진수 %u 값 부호없는 1..

studies/pwnable 2019.10.02

[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

호서전문학교 - 제 14회 정보보호올림피아드(예선) 후기

요즘, 대회를 있는대로 열심히 신청하다보니 매주마다 대회를 하게 되었네요. 이제 곧 시험기간이라서 공부도 되는데 ㅠㅠ.. 그래도 두마리의 토끼를 잡으면 되는 법이죠 ㅎㅎ 이번에 정보보호 올림피아드를 나가게 되었습니다! 호서전문학교에서 개최하는 대회 였는데, 아침 9시부터 오후 5시까지 진행을 했어요. 온라인으로 접속을 해서 예선전을 진행했는데, 저 나름대로 만족스러운 결과가 나왔습니다 ^^ 문제는 주로 리버싱이 있었는데 그 외에도 포렌식, 포너블, 웹 등등 이 있었습니다. 저는 최종적으로 2문제를 풀게되어 전체중 16등을 하게 되었습니다. 우오 ㅠㅠ 내가 16등을 해보다니.... 너무 감격스럽네요 ㅋㅋㅋ 담주에는 cce대회도 있으니, 남은 대회도 최선을 다해서 참가하겠습니다.

일상, 활동 2019.09.24

사이버 작전 경연대회 후기 - 2년뒤 입대

안녕하세요! 요번에 학교선배와 친구들이랑 같이 사이버작전 경연대회 본선을 나갔습니다. 예선때는 선배와 친구들이 문제를 풀고 저는 아무것도 못풀고 버스를 탔지만 이번 본선때는 저와 선배가 함께 문제 하나를 풀었습니다!! babypwn이라는 문제인데, 처음에 보호기법이 다 걸려있어서 어떤식으로 풀지 접근이 잘 안되었지만, canary를 우회하고 어찌어찌 libc주소랑 pie주소를 알아내서 ROP로 쓱싹! 해서 풀었습니다. 팀으로 나가는 대회중에서 제일 처음 풀어본 문제에요 ㅠㅠㅠㅠㅠ 너무 감격스럽습니다. 2년뒤 입대라는 팀인데요,, 보다시피 꼴찌했습니다 ^^;; 그래도 본선 진출한것만으로 엄청 대단한거니까 행복한 마음으로 대회를 마무리 할수 있었습니다! 물론 한문제 밖에 못풀었고 아쉽게 꼴찌를 하게 되었지만..

일상, 활동 2019.09.11

[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

나의 첫 자작곡

학교를 다니며 심심했던 어느날... 나는 친구에게 fl스튜디오라는 프로그램을 얻게 되었다. 난.. 그 프로그램을 실행시켰고.. 결국 중독되어버렸다 ㅠㅠㅠ 안녕하세요 이번에 제가 만든 자작비트를 올려볼려하는데요, 앞서 말했듯이 중독되어버렸습니다 ㅠㅠ 그래도 한동안 하다가 나중에 질리긴 하겠지만, 일단 노래하나를 완성시켜봤는데 제 나름대로 아주 잘만들었다 생각합니다 ㅋㅋㅋㅋ 한번 들어보세용! 후회하지 않으실 겁니다! 후후후..

일상, 활동 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