ipwn
[pwnable.kr] cmd2 본문
이번 문제는 cmd2 문제이다.
비밀번호는 cmd1의 flag이니 못 푼사람들은 풀고 오시길 바란다.
보아하니 cmd1의 문제에 필터링만 조금 더 추가되었을 것 같다.
진짜 필터링이 더 추가됐긴 한데, 너무 많이 추가된 것 같다...
일단 실행 후 환경변수 등록이 불가능하고, /, flag등등 다양한 문자들을 필터링 처리한 뒤 환경변수까지 막아버렸다.
우리가 실행시켜야 할 명령어는 간단히 /bin/cat flag이다.
bin이나 cat는 필터링이 안되어있으니 우회할 필요도 없고, flag는 와일드 카드 *나 ?를 이용해서 우회를 할 수 있지만
/를 우회하는게 관건인 문제인듯 하다. 일단 환경변수를 막았고, 실행 중 등록도 불가능하니
환경변수로 풀 수 있는 문제는 아닌 것 같다. 그래서 우회 방법을 찾다가 echo를 알아냈다.
echo 에 -e 옵션을 주게 되면 이스케이프 문자를 사용할 수 있다는 것을 알아냈다.
그리고 echo -e "\nnn" 형태로 값을 넘겨주게 되면 8진수 ASCII코드 값으로 단일문자 출력이 가능하다.
그리고 /의 8진 아스키 코드값은 057이다.
즉 $(echo -e "\057"bin"\057"cat f*)을 프로그램 상에 넘겨주게 된다면 플래그를 읽어올 것이다.
한 번 제대로 실행이 되는지 저 값을 그대로 넣어보겠다.
이렇게 -e 옵션을 주고 넣었더니 -e 옵션이 그냥 출력된 듯 하다.. 흠..
-e 옵션을 빼고 payload를 넘겨주었더니 플래그가 읽어와졌다.
사실 -e옵션 빼고 입력했을 때 안되면 -e를 "로 묶어도 보고 echo말고 다른 방법인건가.. 하면서 여러가지 시도를 했을텐데,
다행히 한 번에 됐다. 아직 -e옵션을 왜 제거해야하는지, 왜 -e옵션이 같이 출력되는지는 잘 모르곘지만
성공적으로 flag를 읽어왔다.
'Write up > Pwnable.kr' 카테고리의 다른 글
[pwnable.kr] shellshock (0) | 2018.01.06 |
---|---|
[pwnable.kr] mistake (0) | 2018.01.06 |
[pwnable.kr] cmd1 (0) | 2018.01.04 |
[pwnable.kr] lotto (0) | 2018.01.03 |
[pwnable.kr] blackjack (0) | 2018.01.03 |