전체 글 57

giant

1. Code 2. Condition GET 파라미터 shit을 받아온다. 공백(%20), 개행(%0a), 캐리지 리턴(%0d), 탭(%09)을 필터링 한다. 3. Solution $query = "select 1234 from{$_GET[shit]}prob_giant where 1"; 간단히 shit에 공백을 넣어주면 풀리는 문제이다. img_1속 0x0b를 보면, vertical tab 이라 적혀있다. vertical tab(\v)이란, 프린트에 사용되던 Tab의 한 종류이다. 요새는 잘 사용하지 않는다. 실행해보면 다음과 같이 Tab이 이루어 진다. 결과적으로 %0b를 입력하면 문제가 해결된다. 변수명 값 shit %0b

r0pbaby

2015 DEFCON CTF 문제 r0pbaby - Baby's First 1 파일 이름부터 rop(Return Oriented Programming) 기법을 암시합니다. 먼저 실행을 시켜볼까요 의 주소를 받을 수 있고, 스택에 입력을 할 수 있네요. gdb에서 실행 후 과연 올바른 주소인지 알아봅시다. 프로그램을 통해 알게 된 libc 주소는 포인터 주소로 보입니다. 포인터 주소를 가지고 offset 작업을 하기에는 무리가 있기에, 1번 메뉴는 제외하고 문제를 풀어나가야 겠네요. 그렇다면 2번 메뉴, 함수의 주소는 어떨까요? 동일합니다. 2번 메뉴는 믿고 사용해도 되겠네요. 다음으로 3번 메뉴를 살펴볼까요. 3번 메뉴에 breakpoint를 걸어주고 쭉 내려가다보면, memcpy가 나옵니다. rbp부터..

git/github(0)

깃은 여러 명의 사용자들 간에 해당 파일들의 작업을 조율하기 위한 분산 버전 관리 시스템입니다. 왜 쓸까요..?? 쉽게 이해하기 위해 윈도의 파일 탐색기를 떠올려봅시다. abcd.txt / hello.txt / what.txt 세 가지의 파일이 존재합니다. 이를 보관하고, 다른 개발자와 공유하기 위해 압축을 합니다(share.zip). 압축파일을 받은 다른 개발자는 abcd.txt 파일의 일부를 수정하려 할 때 압축 해제 → 파일 수정 → 압축 의 과정을 거치게 됩니다. 이전 개발자는 다시 수정된 압축파일을 받아 보관합니다. 이런 식의 수정이 계속해서 일어나다 보면, 추후 수정하기 전의 상태를 보고 싶을 때 단번에 찾아내기가 쉽지 않을 겁니다. 빠른 속도와 분산형 저장소를 지원하는 git을 사용하면 어떨..