studies 5

해시함수란?

안녕하세요ㅎㅎ 이번에 서울여대 정보보호영재교육원에서 교육받은 1차 1부 수업 내용인 해시함수에 대해 포스팅을 하려고 합니다. 이번 계기로, 앞으로 crypto 공부를 이어나가지 않을까 싶습니다 ^^ 해시함수란? 해시함수는 임의의 데이터를 고정된 길이로 매핑하는 함수를 말합니다. 예를 들자면 이런것입니다. MD5를 예시로 들어보겠습니다. 이렇게 다른 길이의 평문들을 넣게되어도, 같은 길이의 해시값을 가지는 것을 알 수 있습니다. 또한 동일한 입력값을 넣으면, 동일한 결과를 도출합니다. 그리고, 하나 더 알 수 있는것은 입력값이 한글자만 차이가 나더라도, 결과값이 완전히 변하기 때문에 예측하기 어렵습니다 ㅎㅎ ex) md5("a") : 0cc175b9c0f1b6a831c399e269772661 md5("a!..

studies/crypto 2020.04.26

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

포맷스트링 버그 2차시입니다 ㅎㅎ 저번시간에는 포맷스트링버그의 기본적인 원리를 알아보았습니다. 이번에는 포맷스트링으로 메모리값을 변조하는 법을 알아보겠습니다. 바이너리 파일 하나를 한번 볼까요? #include #include void shell(); int main() { char buf[100]; int len; read(0, buf, 100); printf(buf); exit(0); } void shell() { system("/bin/sh"); } Arch: amd64-64-little RELRO: Partial RELRO Stack: No canary found NX: NX enabled PIE: No PIE (0x400000) 이 프로그램은 BOF로 Exploit 하는것이 불가능합니다. 그러니..

studies/pwnable 2020.04.23

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

해킹이란?

무엇일까요? 여러분들은 해커라고하면 주로 어떤 이미지를 상상하시나요? 혹시… 이렇게?? 아니면.. 이런거? 맞아요.. 이렇게 많은 사람들은 해킹이 나쁜것이라고 생각합니다. 저도 처음에는 그렇게 생각했었으니까요. 그러나! 해킹은 나쁜것이 아닙니다! 해킹이란 말이죠… 크흠… 나무위키좀 보고.. 자… 해킹이란! 어떠한 프로그램이나 소스코드가 있을때 알고리즘을 뚫어서 자기 입맛대로 프로그램을 바꾸는 행위를 말해요! 그런데, 여기서 갈리게 됩니다! 그저 순수하게 어떠한 소스코드의 취약점이나 문제점을 파악하고, 그 문제에 대해 해결하거나 재미를 느끼는 것은 아무 잘못이 없어요. 주로 이런 부류를 ‘해커’라고 하지요. 이런 ‘해커’라는 사람은 다른말로 ‘컴퓨터 덕후’ 라고도 말할수 있어요 ^^ 그치만, 이것을 이용해..

studies 2019.08.26