본문 바로가기

[ ★ ]Study195

system call table 정리 32-bit x86 system call tabel은 아래 사이트에서 찾아볼 수 있습니다. http://docs.cs.up.ac.za/programming/asm/derick_tut/syscalls.html %rax Name Entry point Implementation 0 read sys_read fs/read_write.c 1 write sys_write fs/read_write.c 2 open sys_open fs/open.c 3 close sys_close fs/open.c 4 stat sys_newstat fs/stat.c 5 fstat sys_newfstat fs/stat.c 6 lstat sys_newlstat fs/stat.c 7 poll sys_poll fs/select.c 8 lsee.. 2017. 9. 16.
shellcode 만들기 2부 1부에 이어서 간단하게 만들어보겠습니다. #include int main() { execve("/bin/sh", NULL, NULL); } gcc -o shell shell.c -static 옵션을 주어서 컴파일 합시다. 쉘 코드를 만들 것이니, 프롤로그 에필로그를 제외하고 execve함수에 관한 자료들만 모으겠습니다. 어셈블리 파일명은 vi shellasm.s 로 하였습니다. 아래 처럼 입력하여 주세요. .section .data name: .string "" .section .text .global _start _start: 왜 순서가 번대로냐 하실텐데, 인자에 관해서 공부좀 하시면 아실거예요. execve를 부르는 시스템 호출 59부터 차례대로 입력해줍니다. 그 다음 입력해줄 명령은 as -o sh.. 2017. 9. 16.
shellcode 만들기 1부 - Higher Language Version - #include int main( execve("/bin/sh", NULL, NULL) ) 쉘 코드를 만들기전에 우리가 원하는 쉘코드를 생각해볼 필요가 있습니다. C언어를 배우신 분이라면 위 코드는 익숙하실 겁니다. 위 코드를 실행하게되면 /bin/sh 프로그램 흐름으로 바뀌게 될 것입니다. 하나의 악마의 목적이라고 할 수 있죠(해킹에 있어서). execve는 완벽하다고도 합니다. 왜냐하면 누군가가 성공적으로 exploit을 성공하면 root privileges(루트 권한) 을 던져주기 때문입니다. execve는 null terminated pointers to string literals로서 3개의 인자를 가집니다. 그러나 위 코드에서 보듯이 문자열 리.. 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.