전체 글 292

[pwnable.kr] Toddler's Bottle - asm

[pwnable.kr] Toddler’s Bottle – asm how to make shellcodes… 일단 들어가보면 긴 파일 이름을 가진 flag 파일이 있습니다. 가짜 플래그이고 asm_pwn 디렉터리에도 실제로 저런 이름을 가지고 있다고 합니다. 실제 exploit은 nc 0 9026으로 하면 됩니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 from pwn import * filename = "./this_is_pwnable.kr_flag_file_please_read_this_file.sorry_the_file_name_is_very_loooooooooooooooooooooooooooooooooooooooooooooooooooooooo..

[HDCON 2013] luckyzzang

[HDCON 2013] luckyzzang Binary는 이렇습니다. canary는 없네요. 포트는 7777번으로 연결해줍니다. 들어가면 MSG를 입력 받고 종료됩니다. 입력 받는 부분을 보면 BOF가 터집니다. 하지만 v2 % 100의 숫자가 클 때 공격이 성공할 것 같습니다. 바이너리에 system 함수가 없으니 ROP를 이용해서 system 함수의 주소를 구하고 리버스 커넥션으로 exploit 하겠습니다. buf과 Return address의 거리는 0x408 + 4입니다. 입출력으로 send, recv를 이용할 것이니 ppppr gadget을 구해주겠습니다. pppr : 0x080489cc send 함수와 system 함수의 차(offset)을 이용해서 exploit할 때 system 함수의 주소..

System&Write up/CTF 2018.01.30

[Codegate 2014] angry_doraemon

[Codegate 2014] angry_doraemon angry_doraemon 문제입니다. main 함수에서 8888 포트로 연결하네요. 이렇게 6가지의 Attack menu가 나옵니다. 여러 메뉴들을 입력해봤는데, 5. Fist attack에서 r을 입력하면 special attack이 나옵니다. 분석해봅시다. 이 부분인데, 4byte 받아서 call 해주지만 chaining을 못하고, 그것보다 맨 앞 바이트가 \x08이 아닌지 필터링합니다. 즉, plt를 쓰지 못 합니다. 안타깝지만 일단 pass 하겠습니다. 또 의심 가는 부분이 있습니다. 제가 뭘 선택했는지 알려줍니다. 개행 문자 때문에 출력도 이상하게 되는데… canary leak의 냄새가..? read 0x6E. BOF 취약점입니다! 일단 ..

System&Write up/CTF 2018.01.30

[Codegate 2017] babypwn

[Codegate 2017] babypwn 일단 소켓 연결을 하는데 포트번호를 8181번으로 연결해줍니다. 그리고 바이너리에는 canary와 nx가 걸려있습니다. 들어가보면 Echo 기능은 입력을 받고 그대로 출력하는 것입니다.Reverse Echo 기능은 입력을 받고 거꾸로 출력하는 것입니다.Exit 기능은 나가는 것입니다. 이제 함수를 분석해보겠습니다. main의 sub_8048B87() 함수를 보겠습니다. 저 함수 3개를 분석하겠습니다. 1번째 함수는 처음에 환영글을 출력하는 함수입니다. 그럼 2번째 함수를 분석하겠습니다. 여기가 중요 함수입니다. 3번째 함수는 이걸 출력해줍니다. 2번째 함수를 보면, 어머 Echo와 Reverse Echo 모두 BOF가 발생합니다. 여기서 v2는 bp-0x34지만..

System&Write up/CTF 2018.01.29

[티스토리 초대장] 9장 배포! (완료)

i n v i t a t i o n 티스토리 초대장 + 남은 초대장 수 : 00 안녕하세요! 티스토리에 보금자리를 마련하시려는 여러분께 초대장을 배포해 드리려고 합니다. 나만의, 내 생각을, 내 기억을 담는 소중한 블로그를 만들고 싶다면 티스토리로 시작해보세요! 티스토리 블로그는 초대에 의해서만 가입이 가능합니다. 원하시는 분은 댓글에 E-mail 주소를 남겨주시면 초대장을 보내드립니다. 남겨주실 때에는 꼭 비밀댓글로 남겨주세요! 초대장을 보내드리고 바로 개설하시지 않으신 분들은 초대장을 회수할 수도 있으니 바로 개설해주세요! Yes 이런 분들께 드립니다! 1. 다른 블로그를 사용해보셨던 분 2. 이메일 주소가 정상적인 분 3. 블로그를 시작하려는 이유를 남겨주신 분! No 이런 분들께 드리지 않아요! ..

초대장 2018.01.29

[C++] 상속

이미 정의된 클래스의 멤버를 새롭게 정의할 클래스의 멤버로 참조케 하는 것을 말합니다. 즉, 이미 작성한 클래스의 멤버를 물려받는 것입니다. 부모 클래스/기반 클래스 와 자식 클래스/파생 클래스 라고 얘기합니다. class 자식클래스 : 접근지정자 부모클래스{멤버 변수와 함수 선언;}; 자식 클래스의 객체는 부모 클래스의 멤버를 새롭게 정의하지 않아도 멤버 참조가 가능합니다. (private 제외) 12345678910111213141516171819202122232425262728#include #include using namespace std; class Figure //부모 클래스{public: void setColor(const string color); string getColor(); pri..

Programming/C++ 2018.01.22

[C++] 파일 입출력 fstream

사용하기 위해서 #include 을 해야합니다. 파일 출력 클래스 ofstream. 출력할 내용을 파일 객체로 전달하면 됩니다. ofstream 파일출력객체;파일출력객체.open("출력파일이름");파일출력객체 > 입력 내용저장변수;파일입력객체.close(); 파일 존재 여부 확인 멤버 함수 fail() : 객체가 가리키는 파일이 없으면 true를, 객체가 가리키는 파일이 있으면 false를 반환합니다. 파일의 마지막 위치 확인 멤버 함수 eof() : 파일 포인터가 파일 마지막에 위치하면 true를, 파일 포인터가 파일 마지막이 아니면 false를 반환합니다. fstream 클래스는 open을 할 때 파일 모드를 설정해서 따로 입력 객체, 출력 객체 신경 쓰지 않고 쓸 수 있습니다. 12345678910..

Programming/C++ 2018.01.22

[C++] this

객체 자신을 가리키는 포인터입니다. 모든 객체는 this 포인터를 가지고 있습니다. 멤버 함수 내에서 매개변수와 멤버 변수의 이름이 동일할 경우 객체의 멤버 변수임을 명시하기 위해서 사용합니다. 123456789101112131415161718192021222324252627282930#include using namespace std; class SampleScore {public: void setScore(const int score); int getScore(); private: int score;}; void SampleScore::setScore(const int score) { this->score = score; //SampleScore::score = score;} int SampleSco..

Programming/C++ 2018.01.22
반응형