Wargame
-
[Webhacking.kr] 41번 풀이Wargame/webhacking.kr (old) 2019. 5. 7. 19:20
파일을 업로드 할 수 있다. 파일 업로드 취약점 문제인 것 같다. 파일 업로드 취약점이란?업로드할 수 있는 게시판 등을 이용하여 악성 서버 스크립트(웹 쉘)를 해당 페이지에 심어 악성코드가실행되도록 하는 취약점 문제의 소스를 보았다. hidden_dir에 업로드한 파일이 복사되고, 그 파일에 password를 적어준다.업로드한 파일로 접근하여 password를 알아내는 문제이다.hidden_dir를 어떻게 알아내야할까?! 소스를 자세히 보면 copy함수 앞에 @표시가 없다.함수의 에러를 이용하여 hidden_dir를 알아낼 수 있을 것 같다. php의 @함수 실행 시 에러가 발생하여도 에러 메시지를 출력하지 않는다. copy(string \$source, string \$dest[, resource \$..
-
[Webhacking.kr] 40번 풀이Wargame/webhacking.kr (old) 2019. 5. 7. 19:01
login 버튼을 누르면 get 방식으로 no, id, pw 값이 전송되고, 페이지에 Success - guest가 출력되며, 조금 뒤 원래 페이지로 돌아온다. 이 문제는 php 소스가 주어지지 않았기때문에 추측해서 풀어야한다. 추측을 위해 no의 값을 2로 변경하고 login 버튼을 눌러보았다. Failure or을 이용하여 no=2||no=1을 입력해보았더니 guest로 로그인하는데 성공하였다. no의 값을 이용하여 관리자의 아이디와 비밀번호를 알아낼 수 있을 것 같다. magic_quote_gpc 옵션이 켜져 있기때문에 no=0||id=admin을 입력하기 위해 char함수를 이용하였다. admin : char(97, 100, 109, 105, 110) char이 필터링되어 있는 것 같다. hex ..
-
[Webhacking.kr] 39번 풀이Wargame/webhacking.kr (old) 2019. 5. 7. 18:45
덩그러니 입력칸만 준다.소스를 보았다. 쿼리문의 결과 값이 good이 나오면 문제가 풀린다. 쿼리문을 보니 쿼터가 제대로 닫혀있지 않다.쿼터를 닫아주고 테이블에 존재하는 id 값을 입력해주면 문제가 쉽게 풀릴 것 같다. \\를 공백으로, '를 ''로 치환한다.따라서, 내가 '를 입력해 쿼리문을 닫으려해도 ''로 바뀌어 쿼리 에러가 발생한다. 하.지.만substr함수에 의해 15글자로 잘라준다.이 함수를 이용하여 '를 15번째 자리에 두면, ''로 바뀌어도 뒤의 '는 잘리게 된다. admin '(admin 대신 내 아이디를 이용해도 된다.) 문제가 풀렸다. 왜 공백을 넣어도 동일한 아이디로 인식하는지 알아보았다. char : 고정 길이 문자열char(10)으로 지정하면, "aa"와 "aa "를 비교할 때 ..
-
[Webhacking.kr] 38번 풀이Wargame/webhacking.kr (old) 2019. 5. 7. 18:19
Log Injection 문제이다. Log Injection : SQL Injection과 같이 파라미터를 통해 Logging을 조절하는 공격Logging : 시스템 동작 시 시스템 상태/작동 정보를 시간의 경과에 따라 기록하는 것Log : 기록된 기록Log Injection을 통해 허가받지 않은 사용자가 권한을 획득할 수 있다. [ 예시 ]로그인 시 Log 입력형태 (가정)Sep 11:2018:01:07:13: ApplicationName:Failed Login, Id=admin Log Injection을 통한 로그 위조id : foo\r\nSep 11:2018:01:07:13: ApplicationName:Successful Login, Id=admin LogSep 11:2018:01:07:13: A..
-
[Webhacking.kr] 37번 풀이Wargame/webhacking.kr (old) 2019. 5. 7. 18:04
test.txt 파일을 업로드 해보았다. test.txt 가 출력되었다. tmp-15~~ 이것도 파일이름인 것 같다.소스 코드를 보았다. 소스를 해석해보면,\$time에 현재시간의 timestamp가 저장되고, tmp/tmp-\$time 파일 내용은 127.0.0.1가 된다..number 파일 내용은 tmp 디렉터리 내의 파일 개수가 적히고, 파일이 생성될 때마다 갱신된다. 파일을 업로드하면 그 파일의 이름에 몇몇 문자를 공백문자로 치환해주고해당 파일의 내용으로 나의 IP가 들어간다. scandir 함수지정된 경로에 있는 파일 및 디렉터리 반환 현재 시간과 일치하는 timestamp가 포함된 이름을 가진 파일에 적힌 IP주소의7777번 포트로 비밀번호를 전송해준다.tmp 디렉터리의 파일 개수가 30개 이..