System hacking training/Protostar
-
Stack1 풀이System hacking training/Protostar 2018. 2. 3. 21:00
[문제] [풀이] 역시 stack0와 같이 modified 의 값을 변경해야 하는 문제인데 다른점은 if 문 참 조건이 modified 의 값이 0x61626364 이다. 또 다른점은 이 문제의 취약점은 strcpy()에 의해 bof가 발생한다는 점이다. strcpy()는 문자열의 길이를 검사하지 않는다. 정확한 계산을 위해 gdb로 열어본다. 소스 코드가 주어졌기 때문에 분석은 어렵지가 않다. 역시 esp+0x5c 가 modified esp+0x1c 가 buffer 시작 위치다. [Stack] [low address] | char buffer[64] | int modified | SFP | RET | [high address] 이전 문제와 동일하다. 따라서 페이로드를 (python -c 'print "..
-
Stack0 풀이System hacking training/Protostar 2018. 2. 3. 20:24
[문제] [풀이] main()안의 변수를 보면 int형 변수 modified와 char 64크기의 배열 buffer가 존재한다. modified의 값을 바꿀 수 있는가를 시험하는 문제인것같다. 여기서 bof 취약점을 발견할 수 있었는데 gets()는 경계를 검사하지 않는 함수가 쓰였기 때문에 bof 공격이 가능하다. bof 취약점을 이용하여 modified의 값을 바꿔주면 된다. [Stack] [low address] | char buffer[64] | int modified | SFP | RET | [high address] buffer와 modified 중간에 더미값이 없는 쉬운 문제다.(5c(hex) - lc(hex) == 64(dec)) esp+5c 에 0을 넣는것으로 modified의 위치를 알..