본문 바로가기

call printf

Buffer Overflow (BOF) Buffer Overflow먼저 시작하기에 앞서 미리 알려드립니다!내용이 요리조리로 통통 튀어다니면서 이상하고 틀린 부분도 있을 수 있습니다. 이번엔 시스템 해킹에서의 기본 중의 기본인 BOF를 정리하는걸로...먼저 BOF는 말 그대로 Buffer (버퍼가) Overflow (넘치다)버퍼가 넘친다는 말입니다.프로그래머의 실수로 인해 버퍼가 할당받은 공간에 크기 제한을 하지 않고 값들을 집어넣어 할당받은 공간보다 더 값을 넣을 수 있는 취약점입니다. 쉽게 말해서 buf[10]이라는 배열을 만들었다면,이 배열은 총 10개의 공간을 가지게 됩니다.하지만 buf에 10개의 값을 넣는게 아닌 11개, 12개 혹은 그 이상의 값들을 크기를 확인하지 않고 마구잡이로 넣어서 BOF 취약점이 터지게 되는 것이죠 :D 먼.. 더보기
Mr.Robot Season2 Easter Egg 그러타.나는 미스터 로봇 시즌1을 다본 사람이다.미스터 로봇 시즌1이 끝날때 마지막 부분에 아쉽게 끝내서 아쉬워하던 도중어제 미스터 로봇 시즌 2가 나왔다는 소리를 들었다. 오.. 세상에 7월 13일에 나왔다니. 현재는 3화까지 나와있다. 아니 근데 여기서 왜 미스터 로봇이 롸이트업에 들어가있느냐~!? 바로 미스터 로봇에 숨겨진 이스터 에그가 있었다. 바로 이 장면에 나타나는 모니터에 있었다. 이 장면은 tool을 이용하여 랜섬웨어를 생성하는 장면이였는데. 수상한 아이피를 발견할 수 있었다. 192.251.68.254:80에 랜섬웨어가 배포되는 것처럼 느껴진다. 그리고 실제로 접속이 되는지 확인을 해보았다. 실제로 접속이 되고 헤더 중 Location을 발견할 수 있는데, http://i254.bxjyb.. 더보기
About LD_PRELOAD LD_PRELOAD에 대해 ARABOZALOB 문제를 풀다 처음 알게 되어서 정리를 해봤습니다. 아, 환경마다 PRELOAD 환경 변수 이름이 다르더라구요.뭐 사실상 AIX 빼고는 다 이름이 같습니다. what is LD_PRELOAD ?프로세스를 실행하는 중에 라이브러리를 로딩할 때,이 LD_PRELOAD 환경변수가 설정되있으면 해당 변수에 지정된 라이브러리를 먼저 로딩을 하고, 이 중에 libc 함수명과 동일한 함수가 있다면 해당 함수를 먼저 호출을 해주게 됩니다. where is LD_PRELOAD ? LD_PRELOAD의 메모리 영역은 공유 라이브러리 영역에 존재해서 stack 영역보다 낮은 주소에 존재합니다. Let's compile shared library!.so로 컴파일 하기 위해서는 아래.. 더보기
C# 7.0 New Features C# 7.0 New FeaturesC# 7.0 새로운 기능 소개 튜플 ( Tuples )자, C# 7.0에서 새롭게 달라진 튜플들을 알아보도록 하겠습니다. Before Code struct infos{ public int age; public string school;}public infos Getinfo(string name) { ... } var yosi = Getinfo("Z1젼7rl발ㅈr");Console.WriteLine($"age: {yosi.age}, school: {yosi.school}"); 튜플 반환 타입 ( Tuple return types )반환 타입이 2개 이상인 함수를 만들 수 있습니다. after code public (int age, string school) Getinfo(.. 더보기
C# 6.0 New Features C# 6.0 New FeaturesC# 6.0 새로운 기능 10가지 소개* 예전에 써둔 글 옮기는 중입니다! 1. 엘비스 연산자엘비스 연산자는 ? 앞에 있는 객체가 NULL인지 아닌지를 체크해서 NULL이면 NULL을 리턴하고, 그렇지 않으면 ? 다음 속성이나 메서드를 실행합니다.만약 인덱서 혹은 배열 요소등을 접근할 경우에는 ?[] 과 같이 표현이 가능합니다. Before Code var PageName = "Z1젼7rl발ㅈr";if(UserName != NULL){PageName = _Name;} var PageName = UserName != null ? _Name : "Z1젼7rl발ㅈr"; After Code var PageName = UserName?._Name ?? "Z1젼7rl발ㅈr"; 2... 더보기
[Game] Portal2 리뷰 친구가 포탈2를 선물해줬다. 신나는 기분으로 설치하고 있다. 포탈2는 멀티도 되므로 친구와 한판 땡길 예정이다. 사실 리뷰랄것도 별로 없다. 머리만 아플뿐. 물론 재미는 보장한다. 더보기
[Game] Youtubers Life 리뷰 어저께 유투브를 둘러보다가 게임을 하는 것을 봤는데재미있어보이더라.그래서 구매를 했다! 나름대로 이 게임은 캐릭터의 특성을 정하고 유투브의 채널의 특성을 정하고 시작을 하게 되는데.현재 0.7.13 버전으로서는 Game 채널밖에 열려있지 않다. 캐릭터의 특성을 고르는 부분이다.아마도 특성을 고르면 그에 대한 캐릭터의 능력치가 조금 더 올라가는 것 같은 (?) 게임 채널을 고르는 부분이다.현재로서는 위에서 말했듯이 게임 채널밖에 생성이 가능하지만,후에 가면 다른 채널들도 할 수 있을 것 같지만.Music 빼고는 그렇게 기대되지도 않는다. 게다가 캐릭터의 커스텀마이징을 할 수 있는데. 아쉽게도 수염의 색깔은 불가능했다. 그리고 버그가 잔잔하게 졸라게 많으면서 심하다. 1. 친구 프로필 보기 먼저 제일 중요한.. 더보기
일본어 공부를 하자 요롤로룰루럴랄일본어 공부를 하고 있다.먼저 외우기가 급급하다. 히라가나 가타가나 20분 만에 히라가나 절반을 외우게 해준 최고의 영상이다. 공부하면서 참고하면 좋을 곳 http://m.blog.naver.com/piry777/100177126968 더보기
일본 여행 계획 3년동안 열심히 모아온 돈을 이제 슬슬 풀어보려고 준비중이다.바로 일본 여행을 생각하고 있는데역시나 너무나 기대된다.계획을 세우는 것이 너무 좋다. 교통편먼저 일본을 가기 위해 교통편을 알아보았다. 일본을 가는 방법은 세 가지가 존재했다.첫 번째, 비행기두 번째, 배세 번째, 텔레포트 마음 같아서는 세 번째로 텔레포트해서 돈을 줄이고 싶지만,아쉽게도 나는 마법사가 아니였다. 그래서 비행기와 배 두개를 최대한 싸게 갈 수 있는 방법을 알아보았다. 비행기먼저 비행기로 제일 싸게 갈 수 있는 방법을 알아보았다. 방법은 바로 저가항공사를 이용하는 것이다.말 그대로 저렴하게 이용할 수 있는 항공사인데당연히 장점과 단점이 존재하다. 장점은 당연히 매우 싸게 갈 수 있다는 것단점은 식사나 부가 서비스를 통해 돈을 받.. 더보기
Use After Free (UAF) Use After Free오늘 다뤄볼 취약점은 Use After Free입니다.말 그대로 사용한 후 메모리를 해제했을 때에 취약점을 발견할 수도 없을 수도 있을 수도 있습니다.이 취약점은 근래에 브라우저 취약점에서 많이 발견되었습니다. [CVE-2012-4792 IE Use-After-Free Analysis and Exploit]- http://pgnsc.tistory.com/348 멋쟁이 sweetchip님의 BoB 프로젝트 도중에 그 당시에 문서로 남겨놓으셨습니다! 이러한 UAF 취약점은 스택 영역에서 이루어지는 취약점이 아닌 힙 영역에서 발생하는 취약점입니다.What is Heap?네, 그렇다면 heap은 무엇일까요 잘 빠지고 이쁜 엉덩이를 말하는 걸까요?아쉽게도 이런 이쁜 엉덩이를 원하셨다면, .. 더보기
[ReverseLab 스터디] [Abex's CM] Abex 1~5 Abex Crack Me 리버싱을 공부해본 적이 있는 사람들이라면 한번은 꼭 봤을 듯한 크랙미 시리즈이다.출처는 어디인지 모르지만 아마도 Abex라는 사람이 올린걸 유추할 수 있다. Abex Crack Me 1먼저 분석을 위해 이 프로그램이 어떻게 돌아가는 지를 확인해볼 필요가 있다. 나의 하드디스크를 CD-Rom으로 인식하게 만들어보란다.하지만 당연히 내 하드디스크는 CD-Rom이 아니므로 저런 메세지는 당연하지만 ... 어셈 코드가 졸라 짧으므로 분석이 매우 쉽다.GetDriveTypeA 함수는 지정한 disk가 어떤 형태의 저장소인지 판단을 하는 함수이다.kernel32에 있는 함수이며, 함수가 실행되면 특정 정수 값을 리턴하는데 해당 값에 따라 디스크의 유형을 판단할 수 있다. 상수 값 설명 DR.. 더보기
메뚜기의 뇌를 해킹하여 폭탄찾기 세인트루이스워싱턴대학 연구팀에서 뇌를 해킹하여 원격 조작을 할 수 있게 한 메뚜기를 이용해서 폭발물을 찾아내는 시험을 하고 있다고 한다. 메뚜기의 뛰어난 후각을 이용하여 폭발물 탐지에 응용한다는 것인데...덜덜하다... 예전에 바퀴벌레의 뇌에 전류를 보내서 원격조작하는 것을 보고 덜덜했는데... https://source.wustl.edu/2016/06/engineers-use-cyborg-insects-biorobotic-sensing-machines/ 더보기
[CoMpOvie] 0x4 Report(3) 상황음 역시나 시간이 조금 애매해서 최대한 단축시켰다.그리고 원하는 시간대를 얻어낼 수 있었다.그래서 오늘은 시도를 해보았다.원본 영상에서 부분만 잘라내서 비교를 해보기로 했다. 비교하기 네, 잘 되는 것을 볼 수 있었습니다.매우 뿌듯하네요!이제 제가 원하는 데로 잔뜩 있는 영상들을 비교해서 중복된 걸 제거하려고 하는데서버 용량이 50GB라 다 안들어가서 유감. 그리고 미야노는 귀여워요. 더보기
[CoMpOvie] 0x3 Report(2) 상황음...일단 틀은 완성이 됬다고 기뻐하던 중... 그렇다...영상 프레임이 커지면서 시간이 너무 심각하게 오래걸린다는 점이였다...아니...1시간 24분이나...사실은 이때 테스트용으로 돌려놓고 오버워치하고 오면 되겠지~하고 시간을 확인하려고 했으나...경과된 시간을 보고 경악을 하고 말핬다...차라리 이렇게 걸릴빠엔 직접 스스로 영상 30개 대조해도 이것보단 빠르겠다 싶어서 이 프로젝트의 목적이 없어지고 말아버렸다...그래서 최대한 시간을 단축시킬 수 있는 방법을 생각해봤다. 생각음...생각을 해봤다.프레임은 크고이 프레임을 쪼게고 쪼게고 한번에 해버리면 어떨까 싶었다.그렇게 병렬처리를 해버렸다! 효과아래의 사진은 개선하기 전의 실행 결과이다.총 걸린 시간은 5076초...정도... 그렇게 개선을 .. 더보기
[CoMpOvie] 0x2 Report(1) 상황 서로 크기가 다른 프레임들을 어떻게 비교를 해야 효율적일까 생각을 하기 시작했다.이래저래 이것저것 생각을 해본 결과결국엔 노가다!를 선택했다.일단 돌아가게 만든 뒤에 나중에 시간이 괜찮은 날(학교)에 효율적인 방법을 생각해봐야겠다. 그래서 현재 상황은? 2분 정도...?뭐 그럭저럭 시간이 많이 들어가진 않는다.아마 그래도 프레임이 1000단위로 넘어가면 5분 10분 걸릴 수도 있는 상황이라 조금 위험하긴하다만,그래서 생각한 것이 하나 있긴한데 이건 아직 시도하지 않아서 시도해보고 효율적이라면 이 방법으로 해야겠다. 아니 세상에... 더보기
증강현실 게임 Pokemon Go 이 포켓몬 고는 증강현실(AR) 기반 모바일 게임인데.GPS 기능을 활용하여 그 지역에 맞는 포켓몬을 수집하게 하는데 사실 나오기 전부터 엄청 기대했지만,현재 하루만에 앱스토어 1위를 달리고 있다고 한다. 주변에 포켓몬이 나타나면 진동으로 알려주고,기존과 똑같이 포켓몬 볼로 포켓몬을 잡을 수 있다. 몬스터볼은 포켓스탑이라는 곳에서 얻을 수 있고,랜드마크 같은 곳에 가면 희귀한 몬스터를 얻을 수 있다고 한다. 하지만 아직 한국은 정식 출시가 되지 않아서 플레이가 불가능한다고 하는데요.꼭 플레이를 해보고 싶으신 분은 해외 계정을 만드신 뒤에 설치를 하여 플레이를 하시면 될 것 같습니다. 더보기
DJ 카일 하우스 웹툰 꿀잼 ㄹㅇ 프로젝트 구상을 하다 자기 전에 웹툰을 본 뒤에 베도에 갔더니 우연히 발견한 'DJ 카일 하우스'라는 웹툰을 발견하였다.딱히 DJ에 크게 관심도 있는 것도 아니라 1화만 보고 나오려고 했는데그림체가 나의 취향을 저격하는 것이 아닌가...!게다가 스토리도 그렇게 막장으로 나가는 것도 아니라 괜찮았다.하지만 아쉬운 부분은 과거편의 끝을 정확히 맺어줬으면 좋았을 것 같기도...게다가 이 작가분 영어를 잘하시는 것 같더라.보다가 중간에 갑자기 영문으로 나와서 해석하면서 봤더니 알고보니 정신차려보니 초반에 봤던 ... 7화였다 ㅋㅋㅋㅋㅋㅋㅋㅋㅋ그리고 보다가 C++ 이 나왔는데얼마나 반가우던지 ㅋㅋㅋㅋㅋ 아마 작가분도 컴퓨터를 다뤄본 적이 있는 걸까? 근데 아마 깊게 하신 분은 아닌 것 같다...아들과 C++을 한.. 더보기
[CoMpOvie] 0x1 Report(0) 상황 일단 구상을 하기 시작했다.영상을 서로 비교하는 방법이 뭐가 있을까 곰곰히 생각해봤다.대략 2가지의 방법이 생각이 났는데.음향 스펙트럼을 비교해서 비슷하면 같은 영상이라고 판단하는 것영상의 프레임들을 쪼게서 그 이미지들을 서로 비교하는 것 이 2가지의 방법이 생각났지만.음향 스펙트럼은 영상의 특성상 우연히 같은 음향을 뿜을 수 있기 때문에 일단 패스하고 프레임들을 쪼게기로 결정했다. 필요한 패키지들 찾아나서기일단 파이썬에서 영상 프로세싱이 가능한 패키지를 찾아봤다.음...역시... openCV를 쓰기로 했다. How to install OpenCV for Python in Ubuntu 14.04그냥 명령어 하나만 집어넣으면 된다. $ sudo apt-get install libopencv-dev 와.. 더보기
[CoMpOvie] 0x0 Start 주요 기능영상들끼리 비교를 통해 유사한 영상인지 아닌지를 판별 개발하게 된 이유아, 이 프로젝트를 시작한 이유는 내가 여러 영상들을 자주 받는데...영상이 100여개가 넘어가다보니 받은지 안받은지 기억이 안나더라...그래서 아 그냥 만들어야지 하고 시작해봄. 프로젝트 이름이 CoMpOvie 인 이유사실 이름 정하는게 진짜 고민되고 그랫는데...영상들끼리 비교하기 때문에 비교인 Comparison를 적고 영상끼리 비교기 때문에 Movie를 넣어야됬음..!Comparison을 다 적기에는 너무 길어지기 때문에 comp 까지 적고 대문자로 무비를 강조했음. 개발 언어아무래도 서버에서 주로 작업을 하게 될 것 같아서 파이썬으로 채택했음.Python 2.7.11 개발 환경Windows7, Ubuntu 주저리 주저.. 더보기
How main() is executed on linux main()는 리눅스에서 어떻게 실행이 될까? 시작하기에 앞서 리눅스에서의 실행파일이 무엇인지 알아본 뒤에 main 실행이 어떻게 되는지 깊숙히 파고들 예정입니다.먼저 리눅스에서의 실행파일이 무엇인지 알아본 뒤에 실행 포맷 구조를 알아 본 뒤에 main에 대해 들어갈 예정입니다.아마 내용이 축구공처럼 통통 튀기고 이리저리 갈 것 같으니 언제든지 이상한 부분은 댓글로 지적해주시면 감사하겠습니다. What is ELF? 그래서 ELF는 무엇일까요? 게임 또는 애니메이션이나 소설에 나오는 엘프를 말하는 걸까요?네, 하지만 여러분들이 생각하는 그런 엘프는 아니라 유감, 그렇다면 ELF에 대해 알아봅시다!1999년 86open 프로젝트에 x86기반 유닉스 계열 시스템들의 표준 바이너리 파일 형식입니다.ELF (E.. 더보기
Chrome Font Rendering: Google removes DirectWrite flag 0. Open the Google Chrome browser, type the following and press Enter chrome://flags/#disable-direct-write 1. To enable or disable, just click on the link (Enable || Disable) 2. Click on Disable. 3. End 더보기
Korean Keyboard add in English Windows 0. Start - Control Panel 1. Change keyboards or other input methods 2. Keyboards and Languages - Change keyboards 3. Add 4. Korean - keyboard - Microsoft IME check - OK 5. Default input language - Korean (korea) - Microsoft IME - OK 6. END 더보기
백투더백에서 메신저백을 샀다. 2~3일 전에 구매한 메신저 백이 어제 왔다.백팩을 메고 다니면 등에 땀이 장난아니라서 옆으로 매고 다니는게 나을 것 같아서 구매하려고 1달전 부터 찾아보고 있었는데가격이 매우 저렴한 메신저 백이 있어서 구매해봤다.3만 9천원에 구매를 했는데가방 줄이 튼튼했으면 좋겠다. 더보기
Seunghyun Moon (hubeen) 성명 한글 : 문승현한자 : 文昇炫영문 : Seunghyun Moon Etc. 생일 : 1998.11.20나이 : 만 18세(981120)E-Mail : mhubeen@gmail.com혈액형 : RH -O페이스북 : fb.com/hubeener트위터 : @mhubeen거주지역 : 충청남도 서산시 소유 자격증ITQ 한글ITQ 파워포인트정보처리기능사화학분석기능사 활동RNH 프로그래밍 팀 운영 (2013.07.13~2015.05.03)SW로 말해요 스플래시 참여(2015.03.21)충청남도 장학생 선발(2015.06.25)SecurityPlus SecurityPlus Students Academy(SSA) 대표 (2016.01.04~)Hacking Camp 14th Speaker (2016.08.27~2016.. 더보기
System Hacking :: Memory Protection Memory Protection Techniqueswriten by hubeen Linux 환경에서의 메모리 보호 기법에 대해 작성하려고 합니다./*이 글은 틀린 정보가 있을 수도 있으며 글의 맥락이 축구공처럼 뻥뻥 돌아다닐 수도 있습니다.*/ 일단 메모리 보호라는 개념을 알아보도록 하겠습니다. 네, 그렇습니다.운영체제에서 실행되고 있는 프로세스에게 메모리를 할당을 해주게 되는데.할당되지 않은 영역의 메모리에 접근을 하는 것을 막기 위해 있는 것이 메모리 보호 기법의 주된 목적입니다. 이러한 메모리 보호 기법들은 짱짱한 분들이 해커들의 공격을 막기 위해 열심히 노력을 해서 완성이 된 녀석들입니다. 1. ASLR (Address Space Layout Randomization) 이 ASLR은 2001년 즈.. 더보기
[Pwnable.kr] dragon - 75 pt 보호되어 있는 글입니다. 더보기
The About Technique of Anti-Debugging ※ Anti-Debugging 문서 작성 시작. - 04:46 March 25, 2016 [+] Anti-Debugging 기법 소개표&TEB&PEB 구조체 추가 - 05:38 March 25, 2016 [+] 기법들에 대한 샘플 코드와 우회 방법을 작성 - 05:57 March 31, 2016 The about Technique of Anti Debugging_2.pdf SHA256: 9cdd6e72a070a4fcf1f2d100067c5f165f4c75eca62b669726c7f9355370747c ps. 오타&틀린 부분 지적 감사히 받겠습니다. 이미 널리고 널린 내용이지만 작성해보았습니다 ! 더보기
[Codegate2016] Write ups Hello, i sense that didn't written in Writeuphmm... but have name in the file nameit's okay maybe lol.. 더보기
Go 강좌 8편. 함수(Function) 사실 강의가 진행이 안된 이유는 이미지로 쓸 그림을 그려달라고 닥달을 해서 작품이 나올 때까지 기다리고 있었다. 1. 함수 오늘은 함수에 대해서 알아보도록 하겠습니다.함수는 흔히 수학에서 들어보셨을 겁니다.그 수학에서 배운 함수와 현재 우리가 배울 함수와 비슷합니다.x 값을 넣으면 y의 값이 정해지는 것처럼 함수에 인자를 집어넣으면 함수는 결과 값을 되돌려줍니다. 1-1. 사용한다 나는 함수를그렇다. 지금까지 Go로 작성한 프로그램에서는 하나의 함수만을 사용해왔습니다. 바로 그 함수는 메인 함수입니다. 아래는 함수 선언 방법입니다. 아, Go 언어에서는 함수를 선언할 때 위치 제약이 없습니다.c, c++에서는 호출할 때 해당 함수의 선언이 앞에 있어야만 호출할 수 있었습니다.다만 Go언어에서는 함수 선언.. 더보기
Go 강좌 7편. 배열(Array), 슬라이스(Slice), 맵(Map) 1. 배열 오늘은 배열에 대해 알아보도록 하겠습니다.아, 저번 강좌에서 이번에는 배열에 다뤄본다고 말씀드렸는데.생각해보니 배열만 하는 것보단 슬라이스, 맵까지 다루는 것이 좋아보여 더 추가하였습니다. 1-1. 사용한다 나는 배열을 배열이란, 변수를 모아 놓은 집합이라고 말할 수 있습니다.Go언어에서는 배열의 길이가 고정되어있습니다. 음... 예를 들자면 우리 반 학생들의 성적을 변수에 담는다고 가정하면 아래와 같은 변수를 선언해야 됩니다. 딱 보기만 해도 비효율적이고, 반에 학생이 50명이 있다면 하나하나 변수를 50번 선언해야 하며 사용자에게 학생들의 점수를 알려주려 할 때에 변수에 접근하여 값을 얻어올 때도 상당히 불편함을 겪을 수 있습니다. 여기서 우리는 배열을 사용하면 이 문제점들을 한번에 잡을 .. 더보기