본문 바로가기

반응형

분류 전체보기

(246)
webhacking.kr old 10번 문제풀이(Writeup) webhacking.kr old 10번 문제풀이(Writeup) 문제를 들어가면 위와 같이 출력된다. 뭔가 O를 Goal 지점까지 이동시켜야 해결될 것으로 보인다. 코드를 확인해보자. O 10번 줄에 보면 아주 의심스럽게 id가 hackme이다. 이 코드만 자세히 보면 될 것 같다. 보면 O에 마우스를 올려두면 yOu로 글자가 변경되고, 클릭하면 오른쪽으로 아주 조금씩 움직인다. 그래서 직접 누르기엔 귀찮으니 개발자 도구 - console에서 코드를 넣어서 움직여주겠다. ele = document.getElementById("hackme"); ele.style.left=1598; javascript에서 css 값 변경하는 방법을 검색해서 코드를 구성했다. 변수에 id가 hackme인 요소를 저장해서 요소..
webhacking.kr old 08번 문제풀이(Writeup). PHP getenv() 함수 설명 webhacking.kr old 08번 문제풀이(Writeup) 문제를 들어가면 위와 같이 출력된다. 이번에도 admin 계정으로 로그인이 필요해 보이는 문제이다. 코드를 확인해보자. 문제풀이의 핵심은 HTTP_USER_AGENT 값이 admin이 되어야 한다. 따라서 마지막 if문에 mysqli_query에서 user-agent값을 변경해서 admin으로 로그인하는 것이 중요하다. 이 문제도 지금까지 문제와 마찬가지로 SQL Injection으로 풀어야 하는 문제이다. PHP getenv() 함수 설명 getenv()는 내장함수로, 인자의 값에 따라 해당되는 환경변수 값을 알려주는 함수이다. getenv 사용방법 getenv("http_host") 홈페이지 주소값을 얻을 때 getenv("http_re..
webhacking.kr old 07번 문제풀이(Writeup) webhacking.kr old 07번 문제풀이(Writeup) 문제를 들어가면 위와 같이 출력된다. 코드를 확인했다. 가장 눈에 띄는 건 preg_match를 통해 몇 가지 문자가 필터링되고 있다. 그리고 mysql_query문이 나와있고 마지막 elseif로 가면 문제가 해결된다. 결론은 go 자리에 2를 넣어주면 해결될 것으로 보이는데, 2는 필터링되고 있고 +, -, * 도 필터링되기에 다른 방법으로 넣어줘야 할 것으로 보인다. 먼저 이것저것 실험을 했다. 괄호가 필터링이 안되고 char, ascii 등이 안되는 걸 보니 아스키코드로 2를 전달해도 좋을 것 같다. 그래서 union을 통해 var=0인 것과 2인 것을 함께 입력해보았다. select lv from chall7 where lv=($g..
webhacking.kr old 05번 문제풀이(Writeup). 디렉터리 리스팅 취약점 설명 및 응용 webhacking.kr old 05번 문제풀이(Writeup) 문제를 들어가면 위와 같이 출력된다. Join을 하려고 하면 접근 권한이 없어서 거부되는 것을 보니, Login 페이지와 쿠키를 좀 살펴보고 시작해야 할 것 같다. 먼저 guest 계정으로 로그인을 시도해보니, 힌트가 출력된다. 힌트에는 admin 계정으로 로그인이 하라고 나와있다. 이렇게 나올 땐 대부분 쿠키 or 세션문제나 SQL Injection 문제이었던 것 같아서 먼저 시도해봤다. 몇 가지 시도를 해봤는데 잘 안풀린다. 다른 취약점이 있는지 확인해봤다. 몇 가지 시도를 해봤는데, URL을 보니 login.php가 mem이라는 폴더에 있다고 나와서 혹시나 해서 mem으로 접속을 시도하니 디렉터리 리스팅 취약점(Directory lis..
webhacking.kr old 22번 문제풀이(Writeup) webhacking.kr old 22번 문제풀이(Writeup) 문제를 들어가면 위와 같이 출력된다. 딱 봐도 흥미가 생기는 문제이다. admin으로 로그인하는 게 미션이다. Column Name을 가르쳐준 걸 보면 SQL Injection을 이용해야 할 것으로 보인다. 먼저 guest 계정이 있는지 확인했다. 계정이 없어서 "Login Fail!"이 나왔다. 그래서 join으로 가입하고 확인해보기로 했다. guest, guest로 가입하고 나니 Done이 출력되고, index.php?mode=join에서 가입이 되었음을 알았다. 로그인해보자. 로그인이 성공되었을 때 위와 같이 나온다. 패스워드를 해쉬해서 출력해주는 걸 보니 어떤 걸로 암호화했는지 궁금해진다. 그래서 온라인 복호화 사이트에서 어떤 걸로 ..
webhacking.kr old 04번 문제풀이(Writeup) webhacking.kr old 04번 문제풀이(Writeup) 문제를 들어가면 위와 같이 출력된다. 문제 사이트에 view-source가 있으니 힌트를 보자. 먼저 brute force가 막혀있는 모습이 보인다. 문제에서 사용하지 말라는 것 보니 쓰지 말자. 이후 key값을 입력해서 key값이 SESSION값과 동일하면 해결되는 문제이다. 그 과정에서 hash값이 랜덤으로 생성되고, 생성된 값과 'salt_for_you'가 합쳐진 값이 SESSION에 들어간다. 그렇다면 이번 문제의 해결방법은 똑같이 hash값을 랜덤으로 생성하고 'salt_for_you'를 붙인 후 sha1로 암호화를 500번하고 난 값을 사이트에 나오는 값과 비교하면 될것으로 보인다. from hashlib import sha1 i..
webhacking.kr old 21번 문제풀이(Writeup) Blind Sql Injection webhacking.kr old 21번 문제개요(Writeup) 문제를 들어가면 위와 같이 출력된다. 제목과 같이 Blind Sql Injection 문제이다. 코드에는 따로 힌트가 없어서 Blind Sql Injection을 시도하면서 flag를 찾아야 할 것으로 보인다. Blind SQL Injection Blind SQL Injection은 데이터베이스로부터 특정 값이나 데이터를 전달받지 않고, 참과 거짓만을 알 수 있을 때 사용하는 공격 방법이다. 예를 들어 로그인 폼에 SQL Injection이 가능하다고 할 때, 서버가 응답하는 로그인 성공과 로그인 실패 메시지를 이용하여, DB의 테이블 정보를 추출할 수 있다. SELECT * FROM Users WHERE id='ID' AND passwor..
webhacking.kr old 23번 문제풀이(Writeup) webhacking.kr old 23번 문제풀이(Writeup) 문제를 들어가면 위와 같이 출력된다. 코드나 쿠키를 확인했을 때 따로 의심될만한 부분이 없어서 값을 넣어보기로 했다. 먼저 를 주입하는 것이 이번 문제의 목적이기 때문에 넣어봤다. "no hack"이 출력된다. 어떤 것이 필터링 되는지 모르기에 갖가지 값을 넣다 보니, (, /, " 등 특수문자는 그대로 나온다. 문자를 넣을 때는 한 개까지 되지만 두 개 이상의 문자가 들어가면 출력이 안된다. 그래서 문자열 길이 제한을 우회해야 한다. 이번엔 띄워쓰기를 했더니 전체가 입력이 된다. 즉 널 취약점이 있는 것으로 보인다. 따라서 %00을 공백으로 넣어서 script를 입력했다. a%00l%00e%00r%00t%00(%001%00)%00;%00 ..

728x90