분류 전체보기

webhacking.kr

[webhacking.kr] old-45 (sqli → addslashes)

문제분석 & 풀이sql injection 문구과 로그인 창이 있다. 써있는 값 그대로 로그인 해보니 guest 계정으로 로그인 됐다. 아마 admin의 계정으로 로그인하는 것이 목표인 문제라고 예상된다. /i",$_GET['id'])) exit(); if(preg_match("/admin|select|limit|pw|=|/i",$_GET['pw'])) exit(); $result = mysqli_fetch_array(mysqli_query($db,"select id from chall45 where id='{$_GET['id']}' and pw=md5('{$_GET['pw']}')")); if($result){ echo "hi {$result['id']}"; if($re..

webhacking.kr

[webhacking.kr] old-44 (OS Command Injection)

문제분석 & 풀이페이지에 접속하면 name을 입력하는 창이 나온다. 코드를 확인해보면, name을 POST 형식으로 서버에 전송한다. 다음으로 php 코드를 확인해보자. name으로 전송한 값을 $id에 저장하고 system 명령을 실행한다. 주석을 보면 목표는 ls 명령을 실행하는 것이라고한다. 우리가 이용할 취약점은 OS Command Injection이다. ○ OS Command Injection공격자가 임의의 시스템 명령어를 주입하여 서버단에서 원하는 명령을 실행하는 공격을 뜻한다. 웹 애플리케이션에서 system(), exec()와 같은 시스템 명령어를 실행할 수 있는 함수들이 이와 같은 취약점을 제공한다. 문제에서 system()를 사용하고 있고 $id에 대한 검증이 없으므로 OS Comman..

webhacking.kr

[webhacking.kr] old-43 (file upload)

문제분석 & 풀이웹쉘을 업로드하고 "cat /flag"를 실행하라는 미션이 주어진다. 웹 쉘 코드를 작성하고 업로드했다. wrong type 이라고 뜨면서 업로드가 실패한다. PHP 확장자 파일을 업로드 하지 못하게 검증하는 것 같다. 확장자 검증을 우회하기 위해 webshell.php 뒤에 .jpg 를 붙여서 업로드했다. 업로드 된다! 그러나 이 파일은 .jpg 파일이기 때문에 파일에 접근하더라도 웹 쉘을 실행할 수 없다. 중요한 사실은 확장자에 대한 검증을 수행하는 방식이 아니라 다른 방식으로 업로드 파일에 대한 검증을 수행한다는 점이다. 업로드 과정의 패킷을 잡아보자. 패킷 데이터 영역 부분을 보면, Content-Type이 image/jpeg이다. 여러 차례 테스트를 해보면 알 수 있지만, Con..

webhacking.kr

[webhacking.kr] old-42

문제분석 & 풀이페이지에 접속하면 테이블이 나온다. test.txt 파일을 다운로드 해보니, 정상적으로 다운로드 됐다. 이번에는 flag.docx를 다운로드를 했다. access denied가 뜬다. 아마, flag.docx를 다운받는게 목표인 것 같다. 개발자도구로 코드를 확인해보면, test.txt 파일을 다운로드 받는 과정에서 down 파라미터로 요청하고 있다. 전송하는 값을 보면, 마지막에 =이 붙어있다.  추측하자면, base64 인코딩이 된 값이다. 값을 base64 디코딩하면 test.txt 가 나온다. 예상대로 base64로 인코딩된 값임을 확인할 수 있다. 그렇다면 test.txt 파일을 다운받기위해 test.txt 를 base64 인코딩하여 down 파라미터로 요청했으니, flag.do..

webhacking.kr

[webhacking.kr] old-41

1. 문제분석 & 풀이문제에 접속하면 파일을 업로드 할 수 있게 되어있다. 소스를 분석해보자.1. 업로드한 파일의 이름을 $fn에 저장한다. (3번줄)2. $fn을 여러번의 문자열 치환과정을 거친다. (4~7번줄)3. $cp에 임시파일경로를 저장한다. (9번줄)4. 임시로 저장된 파일을 ./{$upload_dir}/{$fn} 경로에 복사한다. (10번줄)5. ./{$upload_dir}/{$fn} 파일을 열어서 flag값을 쓴다. (11~13번줄) 결론적으로 flag를 얻는것이 목표고 flag를 얻기위해서는 "./{$upload_dir}" 가 무엇인지 알아내서 flag 파일의 경로를 알아내야한다. 그러나 주어진 소스에는 {$upload_dir} 가 무엇인지 나오지 않아서 정상적인 방법으로 알아낼 수는 없..

webhacking.kr

[webhacking.kr] old-40 (sqli -> blind)

문제에 접속하니 소스가 따로 주어져있지는 않고 로그인창만 뜬다. 이미 guest라는 계정으로 모든 값이 다 적혀있어서 그대로 로그인을 해봤다.  no,id,pw 파라미터를 통해 값이 전송되며 guest 로 로그인이 성공했다는 표시가 뜨고 이후 몇 초 뒤에 자동으로 로그아웃이 됐다. 로그인창을 다시 봐보니 pw가 5자리가 적혀있고 아마도 guest의 pw는 guest이지 않을까 싶어서 값을 지우고 guest로 입력하여 로그인을 다시해봤다. 로그인이 성공했고 guest의 pw가 guest라는 사실이 확정됐다. DB에 no=1, id='guest' , pw='guest' 라는 데이터가 저장되어있을 것이고 아마 이번 문제는 blind sqli를 통해 admin의 계정으로 로그인하는 문제인 것 같다. select..

keyme
'분류 전체보기' 카테고리의 글 목록 (26 Page)