-
[Webhacking.kr] 51번 풀이Wargame/webhacking.kr (old) 2019. 5. 8. 21:44
오른쪽 아래에 잘보면 Source가 있다.클릭해서 소스를 보자. id가 admin이면 풀리는 SQL Injection 문제이다.SQL 쿼리문이 and로 되어 있기 때문에 pw부분을 주석 처리해 인증을 우회하기로 하였다. id : admin'-- , pw : 1 Wrong이 뜬다. 이 방법으로는 인증우회가 안된다.admin의 pw를 알아내거나, 다른 방법으로 인증을 우회해야한다.pw가 md5 함수에의해 해시화되고있다. 그런데 의심스럽게 md5의 인자로 true가 전달된다. md5(string \$str [, bool \$raw_output ])RSA Data Security, Inc. MD5 Message-Digest Algorithm을 사용하여 str의 MD5 해시를 계산하여반환하는 함수로 raw_out..
-
[Webhacking.kr] 49번 풀이Wargame/webhacking.kr (old) 2019. 5. 8. 21:06
46번 문제처럼 level이 1로 초기화되어 있다.제출해보니 get 방식으로 lv 값이 전송된다. zzibong이 페이지에 출력된다. lv의 값을 변경해보자. 역시나 46번과 마찬가지로 level의 값은 1이외에는 없는것 같다.소스를 보자. lv 값에서 몇몇 문자열을 필터링하고 있으며, id 값이 admin이면 문제가 풀린다.or이 필터링되어 있기때문에 ||가 동작하는지 알아보았다. or 대신 ||를 사용하면 된다.여전히 '는 막혀있기 때문에 2진수, 16진수, char함수를 이용할 수 있다.이 문제는 ,가 필터링되어 있기때문에 2진수, 16진수를 사용해야한다. 1. 2진수 (admin : 0b0110000101100100011011010110100101101110) 2. 16진수 (admin : 0x6..
-
[Webhacking.kr] 48번 풀이Wargame/webhacking.kr (old) 2019. 5. 8. 20:58
파일을 업로드 할 수 있고, 아래는 올려진 파일들인 것 같다.파일 업로드 취약점으로 생각하고 문제를 풀어보았다.test.txt 를 업로드하면서 글도 써야하는 것 같아 a를 작성하고 업로드를 시도하였다. 파일명은 3글자를 넘어갈 수 없다고 한다...3글자의 이름을 가진 파일을 만들어 다시 업로드하였다. 올.. 올라갔다. upload file을 눌러보니 /upload/aaa라는 파일에 접근한다. 분명 나는 aaa파일에 웹 쉘을 생각하고 아래와 같이 php 코드를 작성해 두었는데,,내용은 null이다. 흠../upload 디렉터리에 접근해보았더니 접근 권한이 없었다. 다시 돌아가 Delete를 눌러보았다. 파일이 삭제되면서 get 방식으로 mode와 time의 값이 전송되었다.다른 사람의 파일을 삭제할 수 있..
-
[Webhacking.kr] 47번 풀이Wargame/webhacking.kr (old) 2019. 5. 8. 20:33
Mail Header Injection 문제이다. Mail Header InjectionMail 함수의 Header 파라미터의 값을 이용하여 추가적인 옵션들을 이용하여 원하는 결과를 얻어내는 공격 내 이메일 주소를 넣고 제출한 후 메일을 확인하였으나 아무런 메일이 와있지 않았다.소스를 보자. header 변수에 post로 받은 email 값을 넣고, mail함수의 header 인자로 넘겨준다. mail(수신자, 제목, 내용, 추가 옵션[ From, Cc, Bcc])From 보내는사람, Cc (Carbon Copy) 참조, Bcc(Blind Carbon Copy) 숨은 참조 [ mail 함수 ] https://php.net/manual/kr/function.mail.php[ mail header injec..
-
[Webhacking.kr] 46번 풀이Wargame/webhacking.kr (old) 2019. 5. 8. 18:47
SQL Injection 문제이다.제출버튼을 누르면 get 방식으로 lv 값이 전송되고 zzibong information이 출력된다. lv에 다른 숫자를 넣어서 전송해보니 아무런 정보가 출력되지 않았다. 소스 코드를 보자. 시간이 1256900400보다 작으면 exit이 실행된다.1256900400 == 2009-10-30 11:00:002009년 전으로 돌아갈 수 없기때문에 무시해도 되는 if문이다. 타임스탬프(timestamp)란?1970년 1월 1일을 기준으로 경과된 시간을 초단위로 표시한 시간 time 함수현재 시각을 timestamp 형식으로 나타내주는 함수 계속해서 소스를 해석해보면,lv값에서 공백 / * %를 ""로 치환하고, 몇몇 문자열을 필터링하고있다.lv 값을 이용하여 쿼리문을 검색하..