Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
Tags
- 클라우드가 뭐야
- python
- 페니빙
- cmd1
- 6566
- Docker
- cmd2
- 애너그램 그룹
- pwnable.kr
- Couldn't read row 0
- java.lang.IllegalStateException
- Drive-By-Download
- 나이순 정렬
- pwable.kr
- 백준
- 쏘큩
- 블록체인
- tlqkf
- 클라우드란?
- SQLiteConstraintException
- col -1 from CursorWindow
- 포너블
- UNIQUE constraint failed
- 10814
- pwnable
- 액션바 필요없숴
- 코틀린
- 파이썬
- kotlin
- Make sure the Cursor is initialized correctly before accessing data for it.
Archives
- Today
- Total
푸르미르
pwnable.kr 9. mistake 본문
mistake.c 코드를 보자.
main함수에서는 먼저 file discriptor로 보이는 변수를 선언해주고,
open 함수의 반환값인 fd와 0을 비교하는 것 같다. 하지만 연산자 우선순위로 인해
open함수의 return값과 0을 비교한 뒤, 이 결과를 고려한 값이 fd에 들어가는 것으로 된다. 왜냐하면 비교연산자인 '<'
가 산술연산자인 '=' 보다 순위가 높기 때문이다. 그렇다면 open함수에서 파일이 정상적으로 열린다면 양수를 반환하
므로 0보다 크게되어 fd에는 false 즉 0이 들어가게된다.
두번째 if문에서는 현재 fd에는 위에서의 코드에 의해 0이 들어가 있다.
fd가 0이면 stdin을 의미하여 입력값을 받는다.
이 입력값은 pw_buf에 들어가게 된다.
xor함수가 pw_buf2와 10을 매개변수로 실행이 된다.
마지막 if문에서는 pw_buf의 내용과 pw_buf2의 내용이 같은지 확인한다.
xor함수에서는 len만큼의 배열에 xor 연산값의 결과를 넣는다.
pw_buf와 pw_buf2에 xor연산이 되게 다르게 집어넣어주면 된다.
Mommy, the operator priority always confuses me :(
'SECURITY > pwnable' 카테고리의 다른 글
pwnable.kr 11. coin1 (0) | 2021.05.05 |
---|---|
pwnable.kr 10. shellshock (0) | 2021.05.05 |
pwnable.kr 8. leg (0) | 2021.04.28 |
pwnable.kr 7. input (0) | 2021.04.06 |
pwnable.kr 6.random (0) | 2021.04.06 |