URL 인코딩 표 - URL Encoding Reference
Character From Windows-1252 From UTF-8 space %20 %20 ! %21 %21 ” %22 %22 # %23 %23 $ %24 %24 % %25 %25 & %26 %26 ’ %27 %27 ( %28 %28 ) %29 %29 * %2A %2A + %2B %2B , %2C %2C - %2D %2D . %2E %2E / %2F %2F 0 %30 %30 1 %31 %31 2 %32 %32 3 %33 %33 4 %34 %34 5 %35 %35 6 %36 %36 7 %37 %37 8 %38 %38 9 %39 %39 : %3A %3A ; %3B %3B < %3C %3C = %3D %3D %3E %3E ? %3F %3F @ %40 %40 A %41 %41 B %42 %42 C %43 %43 D %44 %44 E %45 %45 F %46 %46 G %47 %47 H %48 %48 I %49 %49 J %4A %4A K %4B %4B L %4C %4C M %4D %4D N %4E %4E O %4F %4F P %50...
Redis 스터디 관련 영상
구성 Getting started with redis part 0: Overview of what will be covered Getting started with redis part 1: what is redis? Getting started with redis part 2: Installing redis on linux / ubuntu Getting started with redis part 3: Getting to know the cli Getting started with redis part 4: Create simple C# console App using redis Getting started with redis part 5: Going into production and keep learning Getting started with redis part 0: Overview of what will be covered Getting started with redis part 1: what is redis? Getting started with redis part 2: Installing redis on linux / ubuntu Getting started with redis part 3: Getting to know the cli Getting started with redis part 4: Create simple C# console App using redis Getting started with redis part 5: Going into production and keep learning
Git how to remove a directory in my GitHub repository
Remove directory from git and local You could checkout ‘master’ with both directories; git rm -r one-of-the-directories git commit -m "Remove duplicated directory" git push origin master Remove directory from git but NOT local As mentioned in the comments, what you usually want to do is remove this directory from git but not delete it entirely from the filesystem (local) In that case use: git rm -r --cached myFolder
아파치 분산 데이타 베이스, Cassandra: Basic Rules of Cassandra Data Modeling
해외 메이져라 칭할 수 있는 큰 규모의 서비스들의 데이터베이스 스택을 보니 카산드라가 자주 등장한다. 페이스북,트위터등 데이터 처리가 높은 SNS 서비스에서 많이 사용되고있다. 팀원과 프로젝트 진행하면서 데이터베이스를 무엇을 사용할까 얘기하던 중 몽고,다이나모,MySql,Redis 이외 기타 등등, 그러고보니 요즘 데이터베이스 제품 군도 참 다양해서 개발자들이 선택하는 재미가 있는 것 같다. 다이나모랑 Redis 랑 MySql은 회사에서도 계속 사용중이니 별로 관심 밖이었고 몽고는 예전에 사용해본 결과 좋은 인상이있었는데 이번에 항상 보기만 했던 카산드라를 사용해보고자했다. 사용하기 앞서 카산드라의 짧은 개념 및 설명을 하려고한다. 아직 카산드라를 사용해보지않아서 카산드라와 몽고 db 의 차이점을 논할수없지만, 어떤 분 께서 친절하게 두 제품군을 비교한 내용이있어 참고하여 적어본다. 몽고db와 카산드라를 퍼포먼스 면에서 비교하자면 몽고db쪽이 앞선다고 말할수있다. 몽고는 쓰기할때 메모리에 먼저 Write 후에 1분 단위로 Flushing하는 Write back 방식을 사용한다. 메모리에만 쓰면 되니깐 쓰기가 매우 빠르다. 반대로 읽을때는 파일의 인덱스를 메모리에 로딩해 놓고 찾는다.(memory mapped file) memory mapped file 덕북에 성능에서 우위일수있겠지만 제약이 많고 Configuration 구조상 메모리 사용량이 많으며 확장에도 제약이있다. 카산드라는 Write...
Cyber Security Challenge 2015 write-ups
Cyber Security Challenge 2015 write-ups https://www.cybersecuritychallenge.be/ Scoreboard Completed write-ups cryptography/crack-the-hash cryptography/guess-the-algorithm cryptography/one-way digital-forensics/data-extraction digital-forensics/espionage digital-forensics/four-eyes digital-forensics/passwords digital-forensics/wardriving general-security-knowledge/advanced-persistent-threats general-security-knowledge/cryptographic-algorithms general-security-knowledge/hacker-movies general-security-knowledge/hiding-information general-security-knowledge/malware-categories general-security-knowledge/no-such-agency general-security-knowledge/security-conferences general-security-knowledge/security-history general-security-knowledge/security-history-v2 general-security-knowledge/security-organizations general-security-knowledge/security-software general-security-knowledge/security-terminology general-security-knowledge/security-terminology-v2 general-security-knowledge/software-vulnerabilities-v1 mobile-application-security/nviso-vault mobile-application-security/reverse-that-app network-security/lottery network-security/sftp reverse-engineering/crackme reverse-engineering/reverse-that-binary secure-coding/automated-analysis-mistakes secure-coding/owasp secure-coding/static-analysis web-application-security/nsa web-application-security/nviso-file-host External write-ups only none yet Missing write-ups web-application-security/0day-hunting
HMM(Hidden Markov Model)
HMM(Hidden Makov Model)은 관측 데이터가 주어져있을 때 이를 바탕으로 은닉변수를 추론하는 모델 전기 사용량 분석에서는 주기적으로 측정한 일련의 전기사용 총량 데이터가 관측변수가 되고, 이 때 각 시간에서의 기기의 상태를 on/off 두 종류로 이루어진 은닉변수라 한다.
0이 1이 되려면
앞으로 그 누구도 컴퓨터 운영체제를 만들어서 제2의 빌게이츠가 될 수는 없다. 검색엔진을 만들어서 제2의 래리페이지나 세르게이 브린이 될 수도없으며, 또 다시 소셜네트워크를 만들어 제2의 저커버그가 될 수없다. 사람들이 알고 있는 서비스를 해봤자, 세상은 1에서 n이 될 뿐이다. 새로운 것을 창조하면 세상은 0에서 1이 된다. 창조라는 행위는 단 한 번 뿐이며, 창조의 순간도 단 한 번뿐이다.
[탑코더 레드 찍기]TopCoder 탑코더 알고리즘 트레이닝
[01 프로그래밍 대회] 01_ 프로그래밍 대회 02_ 대회 참가의 장점 03_ 초보 프로그래머에게 좋은 프로그래밍 대회 [02 TopCoder 참가 방법] 01 TopCoder 시스템 02 TopCoder 가입 방법 03 SRM 도전 04 SRM 참가 요령 [03 기본 프로그래밍 지식] 01 반드시 필요한 프로그래밍 지식 02 추가적인 프로그래밍 지식 03 정리 [04 시뮬레이션] 01 키위 주스 02 정리 [05 전체 탐색] 01 즐거운 파티 02 암호 03 재미있는 수학 04 회문 05 친구 수 06 다양한 형태의 전체 탐색 07 고장난 로봇 08 미로 만드는 사람 09 마법의 숫자 10 정리 [06 계산량] 01 실행 시간과 메모리 사용량 예측 02 정리 [07 동적 계획법과 메모화] 01 동적 계획법 기본 02 회사 조직과 급여 03 나쁜 이웃집 사람들 04 킹 나이트 체스 05 악수 06 정리 [08 탐색 범위 한정 알고리즘] 01 다양한 색상의 상자와 공 02 탐욕 알고리즘 03 주식 투자 시뮬레이션 04 배치 시스템 05 이분 탐색 06 자동차 대출 07...
Why and When You Should Use Redis
분산 처리 오픈 소스, Gearman에 대하여
회사에서 Gearman을 사용하고있다. Gearman의 대하여 좀 더 이해할 겸 포스팅한다. 대용량 아키텍쳐를 구성할 때 생각해볼만한 프로그램인 것 같다. Wiki의 기재된 Gearman의 대한 설명이다. Gearman is an open source application framework designed to distribute appropriate computer tasks to multiple computers, so large tasks can be done more quickly. Gearman은 분산 처리 오픈 소스이다. Async Queue + Working 서버라 생각하면 쉽다. Request를 Queuing 했다가, 뒤의 Work Process로 넘겨줘서 작업을 비동기로 처리해주는 형식이다. Gearman은 memcached, MogileFS으로 유명한 Danga Interactive에서 개발한 제품 중에 하나로 유명한 펄 해커인 Brad Fitzpatrick 씨가 제작했다. 초창기 Gearman은 순수하게 펄로 작성되었고 클라이언트 라이브러리도 주로 펄만 고려했다. 하지만 이후 Eric Day 씨가 Gearman을 C로 재작성하고 타 언어에 대한 클라이언트 라이브러리 지원 등을 강화하면서 지금의 Gearman은 언어 중립적이고 포괄적인 분산 프로세스 플랫폼(수 많은 언어를 지원하는 이유)으로 발전했다. Gearman은 c,php,perl,python 이외 여러 언어등을 지원하고있다. 따라서 상황에 적합한 언어를 선택하면 된다. 한대의 서버가 오류가 나더라도 다른서버로 접근 단, addserver로 추가해줘야한다. 클라이언트 코드 :...
Webhacking.kr 12번 문제
12번 문제네요. 바로 다음이 기다리는 13번 문제입니다. 오늘은 10,11,12까지 포스팅을 하겠습니다. 13은 왠지 어려울거같아요. 자신이없어요 못 풀 자신이요. 12번 문제는 250점 짜리 문제입니다. “javascript challenge” 라고 써저있네요. 그러면 클라이언트 소스를 참고해봅시다. 아래는 해당 문제 소스코드입니다. WorkTimeFun=String.fromCharCode(118,97,114,32,101,110,99,111,61,39,39,59,13,10,118,97,114,32,101,110,99,111,50,61,49,50,54,59,13,10,118,97,114,32,101,110,99,111,51,61,51,51,59,13,10,118,97,114,32,99,107,61,100,111,99,117,109,101,110,116,46,85,82,76,46,115,117,98,115,116,114,40,100,111,99,117,109,101,110,116,46,85,82,76,46,105,110,100,101,120,79,102,40,39,61,39,41,41,59,13,10,32,13,10,32,13,10,102,111,114,40,105,61,49,59,105,60,49,50,50,59,105,43,43,41,13,10,123,13,10,101,110,99,111,61,101,110,99,111,43,83,116,114,105,110,103,46,102,114,111,109,67,104,97,114,67,111,100,101,40,105,44,48,41,59,13,10,125,13,10,32,13,10,102,117,110,99,116,105,111,110,32,101,110,99,111,95,40,120,41,13,10,123,13,10,114,101,116,117,114,110,32,101,110,99,111,46,99,104,97,114,67,111,100,101,65,116,40,120,41,59,13,10,125,13,10,32,13,10,105,102,40,99,107,61,61,34,61,34,43,83,116,114,105,110,103,46,102,114,111,109,67,104,97,114,67,111,100,101,40,101,110,99,111,95,40,50,52,48,41,41,43,83,116,114,105,110,103,46,102,114,111,109,67,104,97,114,67,111,100,101,40,101,110,99,111,95,40,50,50,48,41,41,43,83,116,114,105,110,103,46,102,114,111,109,67,104,97,114,67,111,100,101,40,101,110,99,111,95,40,50,51,50,41,41,43,83,116,114,105,110,103,46,102,114,111,109,67,104,97,114,67,111,100,101,40,101,110,99,111,95,40,49,57,50,41,41,43,83,116,114,105,110,103,46,102,114,111,109,67,104,97,114,67,111,100,101,40,101,110,99,111,95,40,50,50,54,41,41,43,83,116,114,105,110,103,46,102,114,111,109,67,104,97,114,67,111,100,101,40,101,110,99,111,95,40,50,48,48,41,41,43,83,116,114,105,110,103,46,102,114,111,109,67,104,97,114,67,111,100,101,40,101,110,99,111,95,40,50,48,52,41,41,43,83,116,114,105,110,103,46,102,114,111,109,67,104,97,114,67,111,100,101,40,101,110,99,111,95,40,50,50,50,45,50,41,41,43,83,116,114,105,110,103,46,102,114,111,109,67,104,97,114,67,111,100,101,40,101,110,99,111,95,40,49,57,56,41,41,43,34,126,126,126,126,126,126,34,43,83,116,114,105,110,103,46,102,114,111,109,67,104,97,114,67,111,100,101,40,101,110,99,111,50,41,43,83,116,114,105,110,103,46,102,114,111,109,67,104,97,114,67,111,100,101,40,101,110,99,111,51,41,41,13,10,123,13,10,97,108,101,114,116,40,34,80,97,115,115,119,111,114,100,32,105,115,32,34,43,99,107,46,114,101,112,108,97,99,101,40,34,61,34,44,34,34,41,41,59,13,10,125,13,10);eval(WorkTimeFun); 으으음?? 아스키코드가 제 눈을 괴롭히고있습니다. 클라이언트에서 해석해보죠. ck변수 String.fromCharCode,eval에 대해서 짧게 짚고 넘어갑시다. String.fromCharCode함수는 매개 변수에 아스키 값으로 구성된 문자열을 반환한다. eval은 텍스트를 자바스크립트 문장으로 변환한다. 조건에 ck == CODES 부분에서 ck의 값과 CODE의 값과 같아야 패스워드를 보여줍니다. 그렇다면 ck변수를 참고하고 콘솔창에서 한번 실행해봅시다. javascript:console.debug(ck) console.debug(String.fromCharCode(enco_(240))+String.fromCharCode(enco_(220))+String.fromCharCode(enco_(232))+String.fromCharCode(enco_(192))+String.fromCharCode(enco_(226))+String.fromCharCode(enco_(200))+String.fromCharCode(enco_(204))+String.fromCharCode(enco_(222-2))+String.fromCharCode(enco_(198))+"~~~~~~"+String.fromCharCode(enco2)+String.fromCharCode(enco3)) 1이라는 값이 나옵니다. 해당 조건값 코드를 대입하면 “youaregod~~~~~~~!”이라는 스트링이 출력됩니다. 따라서 패스워드는 “youaregod~~~~~~~!”입니다. 해당 패스워드값을 Auth카테고리에 flag에 넣고 submit하면 sloved 참고 String.fromCharCode eval
Webhacking.kr 11번 문제
바로 다음 문제로 넘어갔습니다. 어차피 13번 이전까지는 쉬어가는 문제들이 빨리빨리 지나갑시다. 혹시 정규식 좋아하세요? 사실 어릴때(중딩)는 정규식을 봐도 그냥 내가 사용할일없을꺼야 아니 있어도 별로 많이 사용안하겠지하며 방관했었는데 여러분 안 할 거 같죠? 회사 들어오면 다~합니다. 어차피 할 거 지금 조금 예습해도 좋습니다. 정규식만 잘해도 좋은 프로그래머가 될 수 있습니다. 정규식에 대한 이해도가 낮다고 생각한다면 생활코딩 php 정규식(‘https://opentutorials.org/module/6/5141’)을 정독하길 바래요. 추가로 정규식에 대해 구글에 검색만 해도 방대한 자료들이 쏟아집니다. 상위 링크들 몇 개 보면 아주 설명이 잘 된 글들이 매우 많습니다. 꼭 한번 참고해보실 바랍니다. 문제를 볼까요. pat 이라는 변수 밑에 조건이 보이네요. $pat=”/[1-3][a-f]{5}_.61.41.64.140.\tp\ta\ts\ts/”; if(preg_match($pat,$_GET[val])) { echo(“Password is ????”); } get 메소드를 통해서 val파라미터를 php 내부 함수 preg_match를 통해서 정규표현식 매칭을 하네요. 일단 참 일 경우 slove 되는 것 같습니다. $pat=”/[1-3][a-f]{5}_.61.41.64.140.\tp\ta\ts\ts/”; 바로 해석해보자면 \1-3a-f{5}(앞의 문자를 5번 이상 반복)_.(앞에 한 문자)*(앞에 문자 0회 이상 반복) 아이피.(앞에 한 문자)*(앞에 문자 0회 이상 반복)\t 제가 표현한 정규식, 간단하게 클리어. 2ccccc_c아이피c%09p%09a%09s%09s
Webhacking.kr 10번 문제
좋은 아침이네요. 저번에 9번 문제를 풀이했었죠. 9번 이후 13번 이전까지는 쉬어가는 문제들입니다. 상당히 난도가 낮습니다. 그래서 해당 포스팅에서도 그리 길게 내용을 담지 않으려 합니다. 문제의 주제는 로또를 사는 것 이군요. 그럼 사러가봅시다. O 풀이방법은 매우 간단합니다. 해당 태그에 온클릭시의 조건을 봅시다. this.style.posLeft==800 posLeft란 개체의 좌표값을 반환하는 속성입니다. 해당 조건에 맞게 값을 변경해주면 끝. 정말 쉽죵?
Webhacking.kr 9번 문제
저번주 까지는 날씨가 따듯해서 좋았는데, 요 몇일 정말 추워졌네요. 후덜덜 사무실에 다들 퇴근하고 혼자 남아있네요. 금요일 날 하라는 퇴근은 안 하고 문제풀이하고 블로그 포스팅 하고있네요. 집에가기전에 생각이나버려서.. 나름 집중하느라 시간도 빨리가서 다행히도 지옥철은 피한거같습니다. 9번 문제는 900스코어 짜리 문제입니다. 제가 이전에 webhacking.kr에서 최고 점수라했는데 아니었네요.13번이 1000점입니다. 우선 웹서버를 식별하기위해 Response 값을 참고합시다. Date:Fri, 11 Mar 2016 11:52:41 GMT Server:Apache/2.4.4 아파치네요. 중딩때의 추억 새록새록ㅋ 그 때가 아니었으면 전 지금 서버 프로그래머가 되지않았겠죠. 물론 처음에는 클라이언트(게임)쪽에 관심이많았었는데.. 각설하고 계속 문제를 풀어보죠. 혹시 Http Methods 몇개나 알고있나요? 4개? 5개? 알고는 있지만 별로 사용할일없는Methods? 노노 요즘은 Restful api 지향합니다. 그래서 필드(?)에서 많이 사용하는 구조입니다. 복습도 할겸 Http Methods 나 볼까요? 영어공부할겸 .. GET The GET method is used to retrieve information from the given server using a given URI. Requests using GET should only retrieve data and should have no other effect on the data. HEAD Same as GET, but transfers the status line...
Webhacking.kr 8번 문제
후덜덜, 정말 바빠서 요즘 연재할 생각을 못 했습니다. 회사에서의 시간이 대부분이고 요즘은 주말에도 따로 준비하는 여러가지 일(?)들 때문에 바쁜나날을 보내고있습니다. 나의 20대 초반 이렇게 가는가…ㅋㅋ 회사에서 원래 포스팅한다는거 자체가 엄청난 깡이지만.. 빠르게 클리어한다는 전제조건으로 포스팅하고있습니다. 글에 오타가 많아도 이해해주시길바래요. 구글 애널리틱스나 티스토리에서 제공하는 방문자 유입로그등을 참고하면 webhacking.kr 문제로 검색 유입되시는 분들이 종종있으세요. 근데 처음 시작과 달리 문제 풀이가 좀 늘어나니 유입수가 상당 수 늘어났네요. 뭐 SEO라던가 부가적으로 상위검색에 노출될려고 신경쓴 제 노력(?)도 어느정도 있겠지만요. 각설하고 문제 봅시다. 소스를 참고하고 “index.phps” 문장이 주석되어있습니다. 해당 document path로 들어갑시다. 그럼 해당 페이지에 php 로직 소스코드가 그대로 노출되어있습니다.(‘와우’) $agent=getenv("HTTP_USER_AGENT"); $ip=$_SERVER[REMOTE_ADDR]; $agent=trim($agent); $agent=str_replace(".","_",$agent); $agent=str_replace("/","_",$agent); $pat="/\/|\*|union|char|ascii|select|out|infor|schema|columns|sub|-|\+|\||!|update|del|drop|from|where|order|by|asc|desc|lv|board|\([0-9]|sys|pass|\.|like|and|\'\'|sub/"; $agent=strtolower($agent); if(preg_match($pat,$agent)) exit("Access Denied!"); $_SERVER[HTTP_USER_AGENT]=str_replace("'","",$_SERVER[HTTP_USER_AGENT]); $_SERVER[HTTP_USER_AGENT]=str_replace("\"","",$_SERVER[HTTP_USER_AGENT]); $count_ck=@mysql_fetch_array(mysql_query("select count(id) from lv0")); if($count_ck[0]>=70) { @mysql_query("delete from lv0"); } $q=@mysql_query("select id from lv0 where agent='$_SERVER[HTTP_USER_AGENT]'"); $ck=@mysql_fetch_array($q); if($ck) { echo("hi $ck[0]"); if($ck[0]=="admin") { @solve(); @mysql_query("delete from lv0"); } } if(!$ck) { $q=@mysql_query("insert into lv0(agent,ip,id) values('$agent','$ip','guest')") or die("query error"); echo("done! ($count_ck[0]/70)"); } 일단 위에 문제를...