본문 바로가기

call printf

Go 강좌 6편. 반복문(for, continue) 1. 반복문 오늘은 반복문에 대해 알아보도록 하겠습니다.반복문이란 말 그대로 반복할 때 사용하는 녀석입니다.Go 언어에서는 반복문에 대해 for문 밖에 없습니다.이 for문이 while문처럼 사용할 수도 있습니다. 1-1. for 문 위에서 말했듯이 Go 언어에서 반복문은 for문 밖에 존재하지 않습니다.for문은 초깃값; 조건식; 증감식 { } 으로 기본 구성이 되어 있습니다. 이 for문은 c, c++, c# 등의 for 문과 동일합니다.※ 하지만 초깃값; 조건식; 증감식 을 ( ) 로 담지 않습니다. 초깃값은 for문이 시작할 때 기준이 되는 값이며 단 한번만 실행되는 부분입니다.조건식은 조건이 true일 경우에 코드를 실행합니다.증감식은 코드가 실행한 뒤에 이 식이 실행됩니다. for 문 실행되는.. 더보기
Go 강좌 5편. 패키지(Package)와 조건문(if, else, switch) 1. 연산자 Go 언어는 각종 기능과 라이브러리를 패키지로 만들어서 제공합니다.이 역시 파이썬과 비슷합니다.파이썬을 사용해보신 분들이라면 쉽게 사용하실 부분입니다. 패키지를 사용하려면 다음과 같이 import 키워드를 사용합니다. 이 import 키워드는 Go 강좌 2편. 안녕? Stop? GO! 편에서 소개한 적이 있습니다. 이 import 키워드로 가져온 패키지를 사용하는 방법은 간단합니다.바로 패키지 이름에 점(.)을 붙여서 패키지에서 제공하는 함수, 변수, 상수를 사용합니다. 1-1. 손 쉽게 사용하기 Go 언어를 구경하다 보면 정말 마음에 드는 문법들이 너무 많아요.패키지를 가져올 때 import "패키지 이름" 으로 가져온다고 위에서 알려드렸습니다.하지만 규모가 큰 프로젝트에서는 여러 패키지를.. 더보기
Go 강좌 4편. 연산자(Operators) Merry Chritmas ! 1. 연산자 이번 강좌에서는 Go 언어에서 사용하는 연산자에 대해 알아보겠습니다.연산자에는 여러 종류의 연산자가 있습니다.모두 다 외울 필요는 없습니다!아래 표에 정리된 연산자들에 대해서 배워보도록 하겠습니다. 분류 연산자 수식 연산자 +, -, *, /, % 증감 연산자 ++, -- 할당 연산자 =, :=, +=, -=, *=, /=, %=, &=, |=, ^=, &^=, = 논리 연산자 &&, ||, ! 관계 연산자 ==, !=, = 비트 연산자 &, |, ^, &^, , ^ 채널 연산자 더보기
Go 강좌 3편. 변수(Variable), 상수(Constant) 1. 변수(Variable) 수학을 공부하신 분들은 '변수'에 대해 알고 계실 겁니다. 수학에서의 변수와 프로그래밍에서 쓰이는 변수는 비슷합니다. 프로그래밍의 변수는 쉽게 말하자면 무언가를 담는 박스라고 생각하시면 됩니다. 값을 저장할 수 있고, 우리가 필요할 때는 그 값을 참조하여 사용할 수 있습니다. 잠깐의 이해를 도우려고 간단한 코드로 예를 들어보겠습니다. 시나리오"어머니께서 심부름을 시키기 위해 천 원을 주셨습니다.상추 한 잎을 사오라고 하셨습니다.상추 한 잎에 800원이라고 하였을 때, 우리가 거스름돈으로 받아야 할 금액은 200원이 됩니다." 이에 상황에 맞는 코드를 작성하면 이러한 코드가 됩니다. 위의 코드에서의 money, sangchoo 는 변수이며 변수가 담고 있는 값을 잘 출력하는 것.. 더보기
Go 강좌 2편. 안녕? Stop? GO! 1. 통합 개발 환경 사용하기 Go 언어는 딱히 통합 개발 환경(Integrated Development Environment, IDE)이 없어도 텍스트 편집기와 컴파일러만으로도 개발이 가능합니다.하지만 통합 개발 환경(Integrated Development Environment, IDE)을 사용하면 좀 더 편하게 개발이 가능합니다. 이 강의에서는 LiteIDE를 이용 할 겁니다.이 IDE는 여러 GO 언어 IDE에서 가볍기 때문에 이 녀석으로 선택하였습니다. 이 IDE에 대해 소개하자면,꾸준히 지속적으로 업데이트를 하고 있으며 리눅스, MAC OS X, Windows를 모두 지원합니다.설치 방법은 LiteIDE 홈페이지에서 압축 파일을 받은 뒤에 압축 해제를 하여 실행 파일을 실행하면 됩니다. ◎ 공.. 더보기
Go 강좌 1편. 시작 1. 시작 시작하기에 앞서 제 이야기를 끄적여보겠습니다!이번에 작성하는 강좌는 제발 꾸준히 끝까지 썼으면 좋겠네요...끈기가 없어서 9강 정도까지 작성하면 그 뒤로는 귀찮아서 작성을 하지 못했었는데... 이번 Go 언어를 공부하게 된 계기는 서점에서 2시간을 버텨야 되는 상황에...제 눈에 들어온 Go 언어 책을 발견하였습니다. 심심하여 보았는데... 꽤 매력적인 언어라고 생각해서 이렇게 공부를 시작하게 되었습니다. 저도 공부를 하며 작성하는 강좌이기 때문에 다른 사람들이 최소한 쉽게 알아들을 수 있게 작성할 예정입니다.저도 이제 막 공부를 하고 있어 다른 사람들이 이해할 수 있게 자세히 작성하는 데에는 무리가 있겠지만,최대한 다른 사람들이 이해할 수 있게 작성하는 것을 최우선적인 목표로 작성할 겁니다... 더보기
[SSA] 시스템 해킹 스터디 6주차 이번 주에는 취약점 검사 방법의 변천사와 현재 트렌드, 핀툴에 대하여 깊게 파고드는 시간을 가졌다. 사실 취약점 검사 방법의 변천사, 현재 트렌드 들은 후반 부 밖에 듣지 못하였다... 시간 계산을 잘못해서 너무 늦게 나와서 20분~30분을 늦어버렸다... 취약점 찾는 기법의 변천사 소스코드 오디팅[Vulnerable functions]-> strcpy , memcpy , gets , fges , printf api usage 탐색-> cat program.c | grep strcpy 후킹-> Vulnerable functions에 유저 인풋이 들어가는지 체크 퍼징-> valid한 유저인풋을 bit flipping이나 구조를 약갘씩 변경해 주면서 다양한 code path를 탐색하면서 특정 값이 취약한 루.. 더보기
[SSA] 시스템 해킹 스터디 5주차 이 5주 차에서는 4주 차 과제를 제일 먼저 풀은 2명이 풀이를 발표하게 되었었다.그러나 1분은 늦잠을 자셔서 못오셨다고..그렇게 pork 풀이와 한 문제의 풀이를 듣고 5주 차 풀이 발표자 분이 과제를 내게 되었다. 이번 과제는 layer7 ctf 2015에서 나온 문제를 풀기 였다. 문제는 이거다. 무려 이 대회에서 4명밖에 못 풀은 문제다. 사실 이 문제는 건드린 시각은 과제 내용을 들은 일요일이였는데.월~수가 수학여행이라 과제를 건드릴 시간이 없어서 오늘 적는다...ㅎ; 사실 월~수 중에 숙소에서 과제를 하려고 했는데...심하게 피곤해서 숙소 도착하면 정신도 못차린 채 쓰러졌다고 ... 한다. ㅇㅇ 시작하죠 일단 아이다로 까봅시다. 일단 이 문제에 맞는 환경을 만들어주기 위해서 /home/qlvl.. 더보기
[SSA] 시스템 해킹 스터디 4주차 ROP 심화 부분이라고 한다. ROP 문제들을 풀면 된다. 풀어야한다... 더보기
[SSA] 시스템 해킹 스터디 3주차 이번 3주차에서는 ROP를 다뤘다. ROP(Return Oriented Programming) : BOf + 여러가지 ①미티게이션 우회할 수 있는 테크닉 ① 미티게이션 : 취약점을 막는 것이 아니라 취약점을 통한 익스플로잇을 막는 것.ex) strcpy(buf, argv[1]) 이러한 미티게이션은 4~5개 정도 있으며 가장 대중 적으로 사용되는 것은 3개가 있습니다. ASLRNXSSP ASLR(Address Space Layout Randomization): 일반적인 bof의 흐름에서는 스택에 쉘코드를 적재해두고 거기로 리턴하는데 스택의 주소를 프로그램 실행 시마다 다르게 합니다. ASLR 확인 방법 : /proc/sys/kernel/randomize_va_space 값을 확인. 0 1 2 걸려있지 않음.. 더보기
[SSA] 시스템 해킹 스터디 1주차 이 스터디에서는 가르쳐주신 걸 모든 내용을 문서화하면 이쁨을 받는다고 해서 작성했3그리고 나중에 내가 쓴 걸 다시 돌아보면서 많은 생각을 하게 만들 것이다. 1주 차에서는 어셈블리어 공부, 어셈블리어 프로그래밍, 핸드레이를 진행하였다. 어셈블리어에는 어마어마한 레지스터들이 있다는 것을 알게 되었다.하지만 우리가 쓰는 레지스터들은 보통 8개 정도 쓰인다고 한다. 범용 레지스터 (General Resgister) EAX (AX, AH, AL) - 누적 연산기, 곱셈과 나눗셈 연산에서 자동으로 사용한다.EBX (BX, BH, BL) - 베이스 레지스터, 특정 주소를 지정한다.ECX (CX, CH, CL) - 카운터 레지스터, 반복 카운터로 사용됨.EDX (DX, DH, DL) - 데이터 레지스터, 입 출력 연.. 더보기
[Pwnable.kr] cmd1 - 1 pt 보호되어 있는 글입니다. 더보기
[Pwnable.kr] lotto - 2 pt 보호되어 있는 글입니다. 더보기
[Pwnable.kr] blackjack - 1 pt 보호되어 있는 글입니다. 더보기
[Pwnable.kr] shellshock - 1 pt 보호되어 있는 글입니다. 더보기
[Pwnable.kr] mistake - 1 pt 보호되어 있는 글입니다. 더보기
[Pwnable.kr] leg - 2 pt 보호되어 있는 글입니다. 더보기
[Pwnable.kr] random - 1 pt 보호되어 있는 글입니다. 더보기
[Pwnable.kr] flag - 7 pt 보호되어 있는 글입니다. 더보기
[Pwnable.kr] bof - 5 pt 보호되어 있는 글입니다. 더보기
[Pwnable.kr] collision - 3 pt 보호되어 있는 글입니다. 더보기
[Pwnable.kr] fd - 1 pt 보호되어 있는 글입니다. 더보기