목록2020/09 (6)
Self-Improvement
보호되어 있는 글입니다.
1 2 3 import re re.findall(r'deviceId: \'(.*?)\'', resp.text)[0] cs 영문, 숫자, 특수문자들 모두 긁어올 수 있는 것
틀린점이 있다면 지적 바랍니다. sw (store word) ex) sw $zero, 0xC8+var_8($fp) // var_8에 값 0을 저장 sh (store halfword) ex) sh $t8, 0x70+var_32($sp) // var_32에 $t8의 값 2byte 할당 ex) socket의 port 부분 lw (load word) ex) lw $v0, 0xC8+arg_4($fp) // $v0에 arg_4에 저장된 값 4byte를 저장 slti, sltiu (set less than immediate, set less than immediate unsigned) ex) sltiu $v0, 9 // $v0의 값이 9보다 작으면 $v0=1 아니면 $v0=0 beqz (branch on equal ..
소스코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 //mips-linux-gnueabi-gcc -o test5 test5.c -no-pie -z norelro #include int main() { int n; printf("INput number:"); scanf(" %d",&n); printf("before switch statement\n"); switch (n) { case 0:printf("[zero]"); break; case 1:printf("[one]"); break; case 2:printf("[two]"); break; case 3:printf("[three]"); break; case 4:pr..
https://go-madhat.github.io/mips_Hello_World/ https://cosyp.tistory.com/223 https://cosyp.tistory.com/223 레지스터 $a0 ~ $a3 까지 함수 인수용 레지스터이지만 더 많은 인자가 필요할시엔 스택으로 저장함
PIE 걸려있는 문제를 풀어보기 위해 찾아보던 중 재밌는 문제인 것 같아서 풀어보았으며 많이 생각을하면서 시간을 소요했다. Checksec 해당 바이너리는 모든 보호기법이 걸려있었다 IDA_main main에는 이렇다한게 없고 pwnme()를 보면 될 것 같다. IDA_pwnme 1. read 함수를 통해 buf의 영역을 채울 수 있으며 이때 buf의 크기(0x10)만큼 가득 채울 수 있다. 2. if문에서 입력값에 대한 검증이 부족하다. (마이너스를 넣을 수 있다) 3. buf의 크기를 가득 채울 시에 그 뒤의 memory leak을 수행할 수 있다. IDA_func1, func2, func3, func4 별다른 취약점은 존재하지 않는다. 풀이방법 memory leak을 통해 func1의 주소를 얻어낸..