본문 바로가기

반응형

웹해킹/webhacking.kr

(58)
webhacking.kr old 34번 문제풀이(Writeup) webhacking.kr old 34번 문제풀이(Writeup) 문제를 들어가면 위와 같이 출력된다. 음 debug를 해달라고 하니까 먼저 Burp Suite에서 캡처해서 코드를 보자. script로 된 코드가 길게 출력된다. 음 일단 복사해서 script beautifilter로 보기 좋게 만들어보자. 정말 script beautifilter는 말 그대로 보기좋게, 예쁘게 코드가 보여서 좋다. 일단 debugme가 alert를 통해 출력되고 있으니까 한번 alert를 검색해봤다. 이후부터는 vscode에서 작업했다. alert가 하나밖에 없으니까 이 부분이 debugme를 출력할 것으로 예상된다. 확인해보기 위해 문제 페이지 콘솔창에서 입력해봤다. 예상대로 debug me가 나온다. 곧 끝날 것 같은 ..
webhacking.kr old 60번 문제풀이(Writeup)와 레이스 컨디션 공격 및 대응방안 정리 webhacking.kr old 60번 문제풀이(Writeup) 문제를 들어가면 위와 같이 출력된다. 코드에서 힌트를 확인해보자. 첫 if문을 보면! is_numeric()을 통해 PHPSESSID값이 숫자가 아니면 Access Denied를 출력하고 1초를 sleep 한다. 이후 가장 눈에 띄는 것은 다음 if문이다. Get 메소드에서 mode가 "auth"이면 Auth가 출력되고, session[idx].txt 파일을 읽어서 result 변수에 저장하고, result값과 session[idx]값이 같으면 해결된다. 마지막 if문에선 자신의 주소가 127.0.0.1이 아니면 readme/session[idx].txt 파일을 1초 쉬고 삭제한다. 그렇다면 session[idx]값이 삭제되기 전에 조회하면..
webhacking.kr old 46번 문제풀이(Writeup) webhacking.kr old 46번 문제풀이(Writeup) 문제를 들어가면 위와 같이 출력된다. 코드가 있으니 코드부터 확인하자. 어제 게시된 문제와 비슷하게 몇 가지 필터링이 된다, 공백과 '/', '*', '%' 등도 필터링이 되고, ', ", Null바이트, \도 필터링된다. 그래도 ()가 필터링이 안되고 있어서 쉬울 것 같다. lv=0||id=char(97,100,109,105,110) 0x가 필터링되고 있어서 hex값을 넣어서 사용하기가 어렵다. 따라서 함수를 이용해야 하는 문제인데, 필자는 간단하게 char() 함수를 이용했다. 성공메시지가 출력되었다. 간단하다.
webhacking.kr old 44번 문제풀이(Writeup) webhacking.kr old 44번 문제풀이(Writeup) 문제를 들어가면 위와 같이 출력된다. 코드가 있으니 코드부터 확인해보자. POST방식으로 id값을 받는데 id는 5자리까지 가능하고 여기서 ls가 실행되면 된다고 한다. 코드에 힌트가 있었다. 이 문제는 코드만 봐도 POST메소드에서 발생하는 Command Injection 문제이다. 필터링이 없다보니 쉬운 편이었다. " echo 'hello! {id}' "); 우리가 넣는 것은 id이기 때문에 문장을 닫고 세미콜론을 넣은 후 명령어를 넣어야한다. "echo 'hello! ';'ls"); 위와 같이 입력이 되면 문장이 닫히고 세미콜론으로 echo가 끝난다. 이후 ls 명령어를 보내게 된다. flag가 있는 파일이 보인다. flag파일을 실행..
webhacking.kr old 49번 문제풀이(Writeup) webhacking.kr old 49번 문제풀이(Writeup) 문제를 들어가면 위와 같이 출력된다. 코드가 있으니 코드부터 확인하자. 코드를 보니 이것저것 많이 필터링을 한다. select, or, and, (, ), limit, order, cash, /, 탭, ', " 공백이 입력되면 no hack이 출력된다. 일단 lv에 숫자가 입력이 되고, GET 메소드 방식으로 값이 전달된다. admin으로 접속하면 해결되는 문제이다. ?lv=0||id=%61%64%6d%69%6e 그래서 admin을 입력했을 때는 안되서 URL 인코딩을 해서 넣었는데 admin으로 값이 바뀐다. 그래서 hex값으로 URL 인코딩 값을 전달했다. ?lv=0||id=0x61646d696e 성공 메시지가 출력되었다. 너무 간단하다.
webhacking.kr old 56번 문제풀이(Writeup) webhacking.kr old 56번 문제풀이(Writeup) 문제를 들어가면 위와 같이 출력된다. 이번 문제도 SQL Injection 문제인 것 같다. 게시판 형태의 SQL 문제가 나오면 columns 값을 찾아서 필요한 내용을 출력하는 문제가 많았다. 하지만 search에서 union select를 아무리 해도 결과값이 나오지가 않아서 다른 방법을 찾았다. 다른 게시판 문제를 풀 때는 search에서 안에 내용을 기반으로 검색을 했다. 따라서 안에 내용이 포함되면 검색 결과에 나왔고, 불일치하면 나오지 않았다. 그래서 검색을 돌려보니 hi했을 때는 admin만 결과로 나왔고, hello를 했을 때, guest가 나왔다. 이 모습을 보니, exploit코드로 Blind SQL Injection 할때..
webhacking.kr old 59번 문제풀이(Writeup) webhacking.kr old 59번 문제풀이(Writeup) 문제를 들어가면 위와 같이 출력된다. 코드가 있으니 코드부터 확인하자. 핵심은 로그인할 때 lv가 admin이면 문제가 해결된다. 먼저 몇 가지 테스트 값을 넣어보자. 보면 id와 phone이 넘어가고 그와함께 lid와 Iphone 값이 함께 전달되는 것으로 보인다. 이번엔 login에서 같은 값을 넣으니 lid와 lphone에 값이 전달된다. id는 저장되고 lv는 로그인될 때 지정되는 것으로 보인다. mysqli_query($db,"insert into chall59 values('{$_POST['id']}',{$_POST['phone']},'guest')"); 데이터베이스에 insert할 때 모습이다. 뭔가 여기서 SQL Injecti..
webhacking.kr old 61번 문제풀이(Writeup) webhacking.kr old 61번 문제풀이(Writeup) 문제를 들어가면 위와 같이 출력된다. 코드가 있으니 코드부터 확인해보자! 먼저 id가 없으면 id는 guest로 접속이 된다. 또 id는 addslashes함수가 있어서 '(싱글쿼터), "(더블쿼터), \(백슬래시), NuLL바이트 앞에 '\'가 추가된다. 따라서 SQL Injection 공격을 막는 함수로 사용된다. 이후 preg_match를 통해 (), |, select, from, ',', by 가 대소문자 구분 없이 필터링된다. 또 id의 길이가 15를 넘어서는 안된다. 먼저 admin을 그냥 넣으면 안될 것 같아서 URL 인코딩을 했다. "%61%64%6d%69%6e" 이렇게 하면 15글자이기 때문에 Access Denied가 출력..

728x90