목록분류 전체보기 (101)
ipwn
you can run, you can hide문제다. ssh로 접속하라고 한다. 접속하자. 그럼 이렇게 파일들이 있는데 딱 봐도 secrets는 페이크 같으니 .secret 디렉토리로 이동해보겠다. 근데 rbash에서 cd가 에러가 난다.그래서 bash쉘로 바꿔줬다. 그랬더니 cd가 된다. 그리고나서 .secret로 이동하고 ls -al로 숨김파일까지 보니, .dont_delete_me.txt파일이 있다.플래그가 적혀있을 것 같다. 그렇다 플래그가 있었다. gigem{TAMU_secret_society_qSD358OUYGcezTlFbqeh} 굳
이번에도 웹 문제이다. 접속해보겠다. 로봇이 춤춘다. 일단 코드를 보겠다. 사실 아까부터 짐작했지만 아무리 봐도 robots.txt에 뭔가 있을 것 같다. 진짜였다. html 들어가보자. 끝 gigem{craw1ing_bot$!} 굳
이 문제는 Veggies라는 문제인데, 웹 문제로 난이도가 쉽길래 한 번 풀어봤다. 사이트 접속하니까 이런 화면이 나온다. Cookies? 버튼을 눌러보겠다. 그리고 쿠키 보면 이런 값이 있다. 이 값을 base64 decode해보겠다. 그럼 플래그 나온다. 굳 gigem{CrAzzYY_4_CO0k!es}
이번엔 pwn3문제이다. NX가 안걸려있으니 shellcode를 때려박고, ret을 변조해 shell을 띄우면 된다. 일단 코드를 보자. int __cdecl main(int argc, const char **argv, const char **envp){ setvbuf(_bss_start, (char *)2, 0, 0); puts("Welcome to the New Echo application 2.0!"); puts("Changelog:\n- Less deprecated flag printing functions!\n- New Random Number Generator!\n"); echo(); return 0;} 또 echo함수를 호출한다. int echo(){ char s; // [esp+Ah] [e..
이번엔 pwn2 문제다. 난이도가 너무 낮아서 그냥 pwn3까지 하루에 다 올리겠다. int __cdecl main(int argc, const char **argv, const char **envp){ setvbuf(_bss_start, (char *)2, 0, 0); puts("I just love repeating what other people say!"); puts("I bet I can repeat anything you tell me!"); echo(); return 0;} echo함수를 호출한다. int echo(){ char s; // [esp+9h] [ebp-EFh] setvbuf(_bss_start, (char *)2, 0, 0); gets(&s); return puts(&s);} 이..
이번에 푼 문제는 pwn1 문제이다. 정말 쉽다. nt __cdecl main(int argc, const char **argv, const char **envp){ char s; // [esp+5h] [ebp-23h] int v5; // [esp+1Ch] [ebp-Ch] setvbuf(_bss_start, (char *)2, 0, 0); puts("This is a super secret program"); puts("Noone is allowed through except for those who know the secret!"); puts("What is my secret?"); v5 = 0; gets(&s); if ( v5 == 0xF007BA11 ) print_flag(); else puts("..
tamuCTF에 pwn1 ~ 5번까지 전부 All Clear했다. 이따가 라업을 써서 올려야겠다. 솔직히 난이도가 너무 쉽기는했지만, 재미있었다. ㅋㅋ 전부 stack문제였고, pwn외에도 여러 가지의 문제들도 풀어봤는데, 일단은 포너블 실력을 꾸준히 키워야겠다.. 리버싱이랑 포너블이랑 크립토 전부 잘하고싶다.. 잘하는 사람들 너무 멋있다.
ID : level12 PW : it is like this[level12@ftz level12]$ ls -ltotal 28-rwsr-x--- 1 level13 level12 13771 Mar 8 2003 attackme-rw-r----- 1 root level12 204 Mar 8 2003 hintdrwxr-xr-x 2 root level12 4096 Feb 24 2002 public_htmldrwxrwxr-x 2 root level12 4096 Feb 22 12:39 tmp hint파일을 한 번 읽어보겠다. #include #include #include int main( void ){ char str[256]; setreuid( 3093, 3093 ); printf( "문장을 입력하세요.\n" );..
uaf를 공부한 김에 pwnable.kr uaf문제를 풀어봤다. 생각한 시나리오가 맞지 않아서 엄청 오래걸렸다.... 그리고 풀긴 풀었지만 이해가 가지 않는 부분도 많다... uaf가 어떤 취약점인지 묻는 문제이다. 사실 C++을 잘 몰라서 왜 이렇게 동작하는지는 모르겠지만, 일단 레지스터 이용해서 호출하고 그러는 거 보고 풀었다. #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
아직까지는 heap overflow를 이용한 leak, 그리고 uaf밖에 공부를 안했는데 uaf를 한 번 정리해봐야겠다.이러다가는 정말 공부한 거 다 까먹을 것 같아서 아무래도 정리를 해야겠다 ㅋㅋ 먼저 이 포스팅을 공부목적으로 들어오셨다면, 메모리구조를 먼저 이해하고 오시길 바란다. 공부를 할 때 블랙펄 시큐리티에 있는 글 들을 많이 참조했다. 아직 힙 구조에 대해서는 제대로 공부를 안해놨기 때문에, 공부하고 그로 인해 발생하는 취약점도 찾아봐야겠다. 여튼 uaf는 use after free의 약자인데, 이 취약점이 발생하는 이유는 생각보다 간단했고 신기했다. #include #include int main() { int *ptr1; int *ptr2; int *ptr3; ptr1 = malloc(4)..