Try to be the expert.

Ainsetin's Hacking & PS & Math

전체 글 63

웹개발 일지 2일차 (20.04.28)

오늘은 저번 1일차에 정한 주제를 구체적으로 어떻게 구현할 것인지 구상하였다. 우선, 구체적인 계획보다는 디자인적인 면을 충분히 고려하기 위해 스토리보드 작성을 시작하였다. 웹사이트를 만들 생각을 하니, dreamhack.io같은 사이트처럼 프로젝트명과 사이트명, 슬로건이 필요할 것 같아 이렇게 정해 보았다. 프로젝트명 : Subhack Develop Project (SDP) 사이트명 : Subhack 슬로건 : 해킹의 모든 것을 담다 그리고 대략적인 사이트 메인의 모습은 어떻게 할 것인지 직접 그려보았다. 5월 첫째주까지는 웹사이트에 어떤 요소가 들어가야 할지, 사이트 페이지의 개수는 몇개로 할 것인지, 어떤 기능을 사용하여 구현할 것인지 등 구체적인 계획을 세워보고, 이후 직접 손으로 스토리보드를 그..

2020 Web Develop 2020.05.05

HackCTF RTC Write-up

오랜만에 라옵을 작성해본다. 요즘 동아리 관련 일을 하니 며칠동안 안잡은 해킹도 자연스럽게 하게 된다. 그런 의미로 열심히 작성해보겠다. 이번 문제는 RTC(Return to csu) 문제이다. 한번 파헤쳐보자. 우선 zip 파일 안에 어떤 것이 있는지 보겠다. 문제 바이너리와 바이너리에 맞는 libc 파일 하나가 들어 있었다. 우선 바이너리 안에 있는 보호 기법을 확인하자. 64bit 기반 아키텍쳐이고, NX bit 이외에 특별한 보호 기법이 보이지 않는다. 이제 IDA로 까보자. 보니까 간단한 write & read 프로그램이다. buf의 크기가 0x40byte이고, read로 0x200을 받으므로 BOF 취약점이 생긴다. 그런데, NX bit가 걸려 있으므로 쉘코드를 놓고 실행하지는 못하기 때문에,..

Hacking/HackCTF 2020.05.01

linux gcc 사용법을 알아보자!

1) gcc 파일명(*.c) : Default로 out 파일이 생성된다. (ex a.out) 2) gcc -c 파일명(*.c) : 오브젝트 파일을 생성한다. 3) gcc -c 오브젝트_파일명(*.o) 파일명(*.c) + gcc -o 실행파일명(*.out) 오브젝트_파일명(*.o) 4) gcc –o 실행파일명(*.out) 파일명(*.c) : 실행 파일을 만든다. (3번을 한줄 로...) -------------------------------------------------------------------------- 1. -Wall 옵션 : 모든 모호한 코딩에 대해서 경고를 보내는 옵션 2. -W 옵션 : 합법적이지만 모호한 코딩에 대해서 경고를 보내는 옵션 3. -W -Wall 옵션 : 아주 사소한 모..

Hacking 2020.04.28

웹개발 일지 1일차 (20.04.21)

한번도 해보지 못한 웹개발을 학교에서 수행평가로 한다고 해서 나도 한번 개발 일지를 써본다. 오늘은 웹사이트의 주제를 선정하는 시간을 가졌는데, 나는 블로그의 대표적인 토픽대로 해킹과 관련된 사이트를 만들고 싶었다. 그래서 누구나 사이트에 들어와서 서로 소통하고 정보를 공유할 수 있는 커뮤니티를 만들 것이다. 각종 CTF나 Wargame을 추천하는 탭부터 시작하여, 채팅 기능과 간편한 파일 공유 기능을 가지고 있는 유용한 웹사이트를 만들고 싶어서이다. 아직 해킹에 대해서는 1년을 배워도 초보지만, 나처럼 해킹공부를 어려워 하는 사람들이 많다고 생각하기 때문에 그런 사람들을 대상으로 하는 웹페이지를 만들고 싶다. 이 해킹 커뮤니티라는 토픽에서 벗어날 생각은 없으며, 이제 열심히 짬내서 웹공부를 해야겠다 ㅠㅠ

2020 Web Develop 2020.04.22

2020 TRUST & STEALTH CTF 출제 및 운영 후기

이 대회는 원래 3월 초에 개학 후 신입생들의 동아리 지원과 해킹에 대한 관심도 향상에 도움을 주기 위해 이 대회를 매년 해 왔었고, 작년에는 내가 직접 문제를 풀어 보았기 때문에 더욱 의미가 있는 CTF이다. 신입생들을 위해 만든 CTF이기 때문에 올해는 직접 출제 및 운영을 도맡았다. 처음 해보는 CTF 운영이라 기대도 있었지만, 초기에 홍보를 위해 많이 노력해야 되더라. 열심히 하고는 싶은데 신입생 친구들이 많이 참여해 주어야 우리도 힘이 나는걸 몸소 느꼈다. 올해는 작년 대비 절반 정도에 못 미쳤지만, 그래도 열심히 풀어주는 친구들이 고맙더라. 올해 STEALTH의 일반동아리장을 맡으면서 책임감이라는 것을 많이 느낀다. 진짜 동아리에 들어온 직후에는 내가 이렇게 될 줄 몰랐는데, 내신을 떠나 동아..

Hacking/CTF 후기 2020.03.27

HackCTF Unexploitable #1 Write-up

이번엔 기본 RTL 문제를 풀어보겠다. 우선 보호 기법부터 확인하자. 보니까 평범하게 컴파일된 바이너리이다. NX bit만 설정되어 있는 것을 볼 수 있다. IDA로 코드를 보자. 우선 64byte 입력에 s의 크기가 16byte이므로 BOF가 가능하다. 보니까 easy RTL 이라고 되어 있다. 왜 그런지 확인해보자. 여기서 system을 호출하므로 call 할 때의 주소를 RET에 집어넣으면 되겠다. 문제는 "/bin/sh"문자열을 구해야 한다는 것인데, 어디선가 "sh"라고만 쳐도 쉘이 실행되는 것을 본 적이 있었다. 일단 Shift+F12로 문자열 검색을 해보았다. 보니까 fflush 문자열이 있는 것을 확인할 수 있었다. 따라서 그냥 's'의 주소를 찾아 "sh" 문자열을 읽어낼 수 있다. 알파..

Hacking/HackCTF 2020.02.20

HackCTF You are silver Write-up

오랜만에 hackctf 라업을 작성하는 것 같다. Format String Bug를 제대로 공부하고 와서 그런지 이번 문제도 어렵지 않게 풀 수 있을 것 같다. 그럼 문제를 풀어보자!! checksec부터 시작!! 평범하게 컴파일 된 바이너리이다. GOT overwriting을 할 수 있다. 그럼 IDA로 한번 보자. 보니까 s에 46byte 크기를 입력할 수 있고, 그것을 printf로 그냥 출력한다. 따라서 FSB 문제라는 것을 알 수 있다. 문제의 구성은 get_tier함수를 실행하고 난 리턴 값을 출력해 주는 것으로 간단하다. 보니까 main에서 가져온 v6값을 전제로 티어를 정해주는 것을 알 수 있었다. 그런데 main에서 호출되지 않은 함수가 존재하였다!! 이것은 인자가 4라면 flag를 출력..

Hacking/HackCTF 2020.02.17

HackCTF ROP Write-up

이번엔 Return Oriented Programming(반환 지향 프로그래밍)에 대한 문제를 풀어보겠다. 우선 ROP라는 것은 ASLR과 NX bit가 걸려 있는 바이너리라는 의미인데, 한번 checksec로 확인해보자! 적중했다. NX bit는 걸려 있는 것을 확인했다! 그럼 IDA로 코드를 보자. 보니 vulnerable_fuction, 즉 취약점 함수가 존재한다. 한번 보자. 캬.... 너무나도 깔끔해서 취한다~ read 함수로 buf에 입력받는다! BOF도 터진다! 그런데 printf가 없어서 인자가 3개인 write 함수를 써야 한다.... 따라서 가젯도 pop pop pop ret를 찾아야 한다. ㅠㅠ 바아아아~로 찾았다! pop pop pop ret = 0x8048509 이번엔 libc의 ..

Hacking/HackCTF 2020.01.14

HackCTF pwning Write-up

이번에는 pwning 문제를 풀어보겠다. 췤쉨췤쉨췤쉑 음 평범한 NX Partial RELRO 문제이다. IDA로 코드 분석해보자. 우선 main에서는 vuln 함수를 호출한다. vuln 함수는 입력하고 싶은 문자열의 길이를 입력한 후 조건을 만족하면 nptr에 입력할 수 있는 함수 같다. 그런데, 입력할 때 일반적인 gets를 사용하지 않고 get_n이라는 함수를 거쳐 받는다. 어떤 취약점이 있을지 한번 get_n을 보자. 보니 a1이라는 주소부터 v5를 증가시키면서 하나하나씩 대입하는 것을 볼 수 있다. 그런데.... 함수의 두 번째 인자는 unsigned int, 즉 부호 없는 int형이었다!! 따라서 우리는 첫 번째 입력을 할 때 -1을 입력한다면, vuln 함수에서 v2=-1이 되어 if문을 통..

Hacking/HackCTF 2020.01.14

HackCTF Beginner_Heap Write-up

어제부터 힙에 관한 기본 지식과 메모리 구조에 대해 공부해 봤는데, 이를 바탕으로 Beginner_Heap 문제를 풀어보겠다. 우선은 heap 문제이든 stack 문제이든 checksec이 국룰이다. 보니까 Partial RELRO와 NX bit가 적용되어 있다. 즉, GOT overwriting은 가능하나 쉘 코드 사용이 불가능하다. 우선 어떤 코드인지 IDA로 보자. 오.... 역시 heap 문제답게 동적 할당이 나온다... 무섭지만ㅜㅜ 한번 분석해보자. 그런데, 너무 main이 더럽다. 깔끔하게 볼 수 없을까? 당연히 방법은 존재한다. 키보드의 '|'와 '\'가 있는 버튼을 누르면! 자료형이 보이지 않게 된다! 아무튼... 분석 시작해보자. - - - - - - - - - - - - - - - - ..

Hacking/HackCTF 2020.01.13