command-injection-1
Vulnerability
해당 문제는 아래의 코드에서 취약점이 발생한다. cmd변수에 사용자 입력값이 들어오는 필터링 없이 그대로 사용하여 Injection이 발생된다.
output = subprocess.check_output(['/bin/sh', '-c', cmd], timeout=5)
Exploit
위의 취약점을 토대로 바로 Injection을 시도하게 되면 형식에 맞춰서 입력하라고 나온다. 이는 client단에서 Input태그의 속성 값에 의해 필터링되는 것인데 이는 개발자 도구를 이용하여 해당 속성만 없애주면 입력할 수 있다. pattern="[A-Za-z0-9.]{5,20}" 부분이 문제의 부분이다.
pattern="[A-Za-z0-9.]{5,20}"부분을 개발자 도구를 이용하여 지우고 ; id 와 같이 입력을 해보았지만 Error가 발생하는데 Error를 자세히 보면 더블 쿼터로 인해 command가 실행되지 않는 것을 알 수 있다.
이를 토대로 " ; ls " 와 같이 더블 쿼터를 맞춰주면 결과값이 명령어를 실행시킬 수 있다. 해당 디렉터리에 flag.py가 보이는 것을 확인할 수 있다.'
123" ; ls || echo "
해당 쿼리 부분에서 세미 콜론으로 전 의 명령어를 종료한 뒤 ls명령어를 실행시킨다. ls명령어가 정상적으로 실행되면 OR연산으로 인해 뒤의 echo ""부분이 실행이 안되어 ls의 결과값이 출력될 것이다.
flag.py의 내용을 보기 위해서는 cat을 써주면 된다.
❗ 저작권
'CTF > Web' 카테고리의 다른 글
[Dreamhack CTF] blind-command (0) | 2022.07.25 |
---|---|
[Wargame.kr] strcmp (0) | 2022.07.25 |
[Wargame.kr] jff3_magic (0) | 2022.07.25 |
[Wargame.kr] md5 password (0) | 2022.07.25 |
[Dreamhack CTF] Mango (0) | 2022.07.23 |