1. #include <stdio.h>
  2. #include <unistd.h>
  3.  
  4. int main(int argc, char *argv[]){
  5. FILE *secret = fopen("/challenge/app-systeme/ch5/.passwd", "rt");
  6. char buffer[32];
  7. fgets(buffer, sizeof(buffer), secret);
  8. printf(argv[1]);
  9. fclose(secret);
  10. return 0;
  11. }


버퍼에 패스워드가 저장되므로
argv에 %8x를 넣어줘서 패스워드값ㅇ르 읽어오면된다



수상하게 긴 놈이 보인다

앞에는 0804b008인 쓸데없는 쓰레기값일 확률이 높으므로 그 뒤에 부터 봐보면


이거는 비밀번호 쳐보니까 안되더라


ㅇ왜냐하면

리틀에디안으로 저장되있어서 그렇다

4글자씩 거꾸로 읽어줘야한다

Dpa9d6)(Epam

이 답





solution에 들어가 다른사람 풀이를 보니 파이썬으로 코딩해놨따

  1. binary5@challenge02:~$ echo -e $(./binary5 $(ruby -e 'print "%08x"*150') | sed -r '
  2. # little-endian architecture, reorder bytes
  3. s/(..)(..)(..)(..)/\4\3\2\1/g
  4. # preceed every byte by \\x so it will be
  5. # interpreted by echo -e
  6. s/(..)/\\x&/g
  7. ' ) | grep -Pazo '[[:print:]]{13}\n'
  8. Dpa9d6)(Epamd


파이썬 정규식을 공부해봐야겠다


+ Recent posts