본문 바로가기

2017/08

세계맥주축제 유럽에 다녀와 제일 크게 바뀐것은 바로 술취향이다. 소주로 흥청망청을 즐기던 타입에서 맥주로 여유를 즐기는 타입이 되었다. 단, 맥주에 환장하는 애가 돼버렸다... 축제 광고에 또 환장해서 결국 놀러 가버렸다. 맥주에 환장해서 사진은 별로 없다. 오산 야시장에서 한 축제였는데 맥주가 생각보다 맛있었다. 비싸기도 했지만... 이렇게 공연도 하고 저~~~ 끝까지 뻗은 길에 모두 맥주를 판매한다. 사실 오지게 즐길 수 있는 곳은 아니었다. 단, 맥주는 참 맛있었다ㅎㅎ 유럽에서 이런 소소한걸 즐기다보니 한국에서도 찾게 된 행사들이지만 참 즐길만한 것 같다. 컴퓨터를 공부하면서 공대생이 되어가는걸 막아주는 느낌? 그런게 아니더라도 여가생활로 참 좋은 시간이었다.
광교 호수공원 내 취미는 산책이다. 공부하다 답답하면 동네를 돌아다니고 일부러 버스에서 일찍 하차해 걸어가곤 한다. 그래서 시험이 끝난 김에 취미생활을 하러 나섰다 광교 호수공원에 산책하러 나섰다 평일이라 그리 붐비지도 않고 그리 휑하지도 않았다 물론 나처럼 그냥 바람쐬러 산책나온사람은 별로 없었다. 공원이라 바람쐬러 나오기 좋은곳이긴 하지만... 산책로가 겁나 길다. 슬슬 한바퀴 쭉 걷는데 3시간 반은 걸렸던것같다. 대신 중간중간 쉴곳이나 활동할 곳이 많았다 그래서 가족단위로 소풍나온 사람들이 제일 많았었다. 참 이쁘게 잘 관리하는 공원이라고 생각했다. 사진보다 정말 훨씬 이쁘다. 생각보다 너무 커서 힘들기야 했지만 저비용에 많이 힐링하고 가는 느낌이었다. 오늘 오지게 취미생활했다
LIFE 사진전 즐거운 방학을 맞아 무지하게 바쁘게 살다 노름병이 도져서 잠시 놀았다. 예술의전당에서 10월초까지 진행하는 LIFE사진전이다. 유럽여행에서 다녔던 미술관들이 생각나서 포스터를 보자마자 가기로 했다. 왜 LIFE사진전인가 했는데 LIFE 잡지사에서 그간 촬영한 사진들을 전시하는 곳이었다. 무식이 들통난 순간... 전혀 모르고 갔지만 중간중간 화면에서 방영하는 다큐나 사진에 딸린 설명을 보며 전시회를 즐겼다. 한국의 근현대사에 관련된 사진도 있고 역사적으로 유명한 사람들의 모습도 볼 수 있었다. 오랜만에 느끼는 여유롭고 조용한 분위기도 너무 좋았다. 놀러나온김에 가본 방탈출카페 첨이었는데 생각보다 재밌었다. 젤 어려운 난이도였는데 1분차로 시간내에 못풀었다 깨비 그리고 역시 마무리는 맥주 노는김에 비싸게 세..
blackjack blackjack게임이다. millionare에게 flag를 준단다. big money get that 해보자. 일단 게임을 해보자 500달러를 주고 게임을 시작한다. cash부분이 millionare가 되면 될 것 같다. 저 부분을 보여주는 코드로 따라가보자 게임을 수행하는 부분이다. cash_test는 돈이 없으면 쫓아내는 코드이다. randcard()는 카드를 랜덤하게 보여주는 코드이다. 위의 카드모양을 출력해주는 것 같다. dealer()는 잘은 모르겠지만 무언가 수행한 뒤ealer has a total of~~ 이 부분을 출력해준다. 젤 중요한 betting()의 소스이다. 배팅금액을 받고 소지금보다 큰지 확인한다. 그런데 소지금이 더 크면 다시 입력을 받고 이 값은 수정없이 그냥 바로 반환한다..
passcode 10점짜리 문제!!! 시~~~작!!! 파라미터도 없고 반환값도 없는 함수 두 개를 연달아서 실행시켰다. 이렇게 실행하면 assembly에선 연달아서 2번 call을 호출한다. 즉 두 함수의 ebp값이 같다는 것이다. welcome함수에선 그냥 string을 입력받고 출력해준다. 그냥 passcode1,2를 입력받길래 비교값을 그냥 입력했는데 몇번을 해도 안된다. 잘 보니까 scanf에 &passcode1이 아니라 그냥 passcode1로 써놨다. 이러니 안되지... 맨 처음으로 돌아가서 welcome과 login은 같은 ebp 주소를 갖는다. 그래서 welcome의 name과 passcode 2개가 겹칠거라 생각하고 디버깅을 해 보았다. name을 입력받고 출력하는 scanf와 printf 호출부분이다...
lotto 뭔가 쉬운문제만 계속 푸는것 같지만... 이름이 너무 맘에들었으니 풀어주겠다. ( 실제로 하진 않음 ) 이번엔 소스보단 실행을 먼저 해보자 ( 진짜 실제론 안함 ) 정말 한눈에 딱 알게 해놨다. 설명은 화면만 봐도 알 수 있으니 생략하자 ( help는 죄 printf고 exit는 정말 그냥 끝내버린다. ) 코드가 긴 관계로 중요한 부분만 잘라냈다. random하게 받은 6개의 값을 1~45로 한정하고 비교해 match가 6이 되면 flag를 보여준다. /dev/urandom이 의심스러워 여러 방면으로 검색하다 디버깅해본 결과 random값을 잘 주는 멀쩡한 파일이었다. 이번엔 비교하는 for문을 확인해보자. 길이가 6인 문자열 2개를 비교할거면 for문 1개면 되지만 2중으로 사용하였다. 때문에 subm..
mistake 뭔가 실수를 했는갑다. hint : operator priority 뭘 어쩌란건지 한참 보다가 힌트에서 힌트를 얻고( 역시 문제를 잘 봐야되 ) 연산자 위주로 살펴보았다. if( fd=open("/home/mistake/password",O_RDONLY,0400) 0) 이걸 보고 알았다. 연산 순서를 찾아보니 대입연산자가 비교연산자보다 순위가 뒤인걸 알아냈다. 즉 '>'연산을 '='연산보다 먼저 수행하는 것이다. open()함수는 파일을 성공적으로 열면 file descriptor 번호를 반환한다. 이때 0,1,2는..
random 순서대로 passcode를 풀 차례지만 10점에 허걱하고 옆에있는 1점짜리 random 먼저 풀기로 했다. 이름이 random이니 random하게 순서가 매겨졌다( 뭐래... ) rand()함수를 사용해 받은 값과 scanf()로 입력받은 key값을 xor한 값이 0xdeadbeef여야 한다. rand()함수를 사용해본 사람들은 알겠지만 srand를 사용해 시드값을 바꿔주지 않으면 rand()함수는 매번 똑같은 값을 반환한다. 웹 컴파일러를 사용해 확인해보자 매번 1804289383을 반환한다. 그럼 이 값과 xor연산을 했을 때 0xdeadbeef가 나오는 값은 random값과 0xdeadbeef의 xor연산을 통해 알 수 있다. 0xdeadbeef ^ 0x6B8B4567(random in hex) =..