본문 바로가기

[ ★ ]Study/War Game29

[Toddler's Bottle] pwnable.kr unlink 풀이 첫 시작은 … unlink corruption을 검색해서 공부하면 되겠네요. 파일은 flag, intended_solution.txt, unlink/.c 이렇게 4개 있네요. 123456789101112131415161718192021222324252627282930313233343536373839#include #include #include typedef struct tagOBJ { struct tagOBJ* fd; struct tagOBJ* bk; char buf[8];}OBJ;void shell() { system("/bin/sh");}void unlink(OBJ* P) { OBJ* BK; OBJ* FD; BK=P->bk; FD=P->fd; FD->bk=BK; BK->fd=FD;}int main(.. 2017. 9. 17.
[Toddler's Bottle] pwnable.kr memcpy 풀이 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105// compiled with : gcc -o memcpy memcpy.c -m32 -lm#include #include #include #include #include #include #include unsigned long long rdtsc(){ asm("rdtsc");}char* slow_memcpy(char* dest, const .. 2017. 9. 16.
[Toddler's Bottle] pwnable.kr asm 풀이 readme 읽으거리가 있네요. 9026포트로 실행해서 flag를 얻고, 심지어 플래그 이름은 끔찍하게 list에 있는거랑 똑같다네요. 시작하기 전에 pwntools로 쉘코드를 간단하게 만들 수 있는데, 저희는 직접 정석으로 해보는 걸로 하겠습니다. 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182#include #include #include #include #include #include #include #include #define LENGTH 128 void sandbox.. 2017. 9. 16.
[Toddler's Bottle] pwnable.kr codemap 풀이 친절하게 힌트도 제공해 주네요. 0x403E65 부분이 실행될 때 EAX, EBX를 보라고 합니다. 위 사진은 실행화면입니다. 올리디 버거로 하나하나 분석을 해봤습니다. 아래 사진은 분석하면서 모은 자료... 적절히 브레이크 포인트를 걸어보면서 자료를 모아봤는데, 즉, 손으로 1000번을 해야 자료가 모아진다. 이는 포기를 하란 뜻이다. 1000번은 무리다. 잔머리를 좀 굴리다 보니 pwnable.kr 은 제목이 곧 힌트라는 걸 깨닫고 제목을 검색해보려고 한다 https://github.com/c0demap/codemap codemap을 검색하면 가장 위에 올라와있는 github이다. codemap은 ida plugin이라는 것을 알 수 있다. 영어를 읽으면서 사용법도 익히고 설치도 했다. 쭉 내려가면 .. 2017. 9. 15.
[Toddler's Bottle] pwnable.kr uaf 풀이 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879#include #include #include #include #include using namespace std; class Human{private: virtual void give_shell(){ system("/bin/sh"); }protected: int age; string name;public: virtual void introduce(){ cout 2017. 9. 15.
[Toddler's Bottle] pwnable.kr cmd2 풀이 포인트가 9점입니다. 1과는 다르게 생각할게 많은가보군요. 1과는 다른 분위기으 코드입니다. 친절하게 argv[1]의 값을 출력은 해주네요. 또한, 이제 쓸 수 있는 문자도 많이 줄어들었습니다. 생각과 풀이과정 ( 도움이 되실까 하여…) 제일 중요한 / 가 필터에 걸리기 때문에 16진수로 우회하고자 했습니다. \x2f 를 섞어서… 구글에 쉘 스크립트로 16진수 전달하는 방법들을 찾다가 read 가 눈에 띄었습니다. 많은 옵션도 있지만 무엇보다 아무튼 USER INPUT이라는게 핵심이더라구요. read x 를 하게되면 입력값이 x에 저장이 됩니다. 그러면… 연속으로 echo $x를 하게되면 같은 문자가 2번 보이게 될 것입니다. 테스트 해봤습니다. echo 를 빼고 명령어를 입력시켜보았습니다. 혹시몰라서 .. 2017. 9. 15.