반응형

WebHacking 83

[webhacking.kr] 6번 문제

100점인 6번 문제를 풀어보도록 하자. 문제에 들어가게 되면 현재는 문제를 풀어버려서 admin/nimda 계정으로 변환되어 있지만, 원래는 guest/123qwe로 표시되어 있다. view-source를 클릭하게 되면 힌트가 되는 코드를 확인할 수 있다. 코드를 해석해보면 id=admin, pw=nimda 값을 20번 base64 인코딩하여 값을 user와 password 쿠키의 값으로 입력하면 해결되는 것을 알 수 있다. 이제 20번의 base64인코딩을 위한 파이썬 코드를 작성해보자. import base64 id = "admin" pw = "nimda" for i in range(0, 20): i = i + 1 id1 = id.encode("UTF-8") id2 = base64.b64encode..

[webhacking.kr] 5번 문제

300점인 5번 문제를 풀어보도록 하자. 첫 화면은 Login과 Join 버튼만 나와있다. Join 버튼을 누르게 되면 'Access_Denied' alert창이 뜨게 되고 Loing 버튼을 눌러 나타나는 id과 pw에 Injection을 시도해봤으나 별다른 반응은 없었다. 개발자 모드로 진입해서 소스코드를 살펴보자. login페이지로 넘어가는 경로를 확인해보니 mem/login.php로 이동하는 걸 확인할 수 있으므로, Directory Listing을 시도해보자. login.php 이외에 join.php 페이지가 존재하는 것을 확인할 수 있다. join.php 페이지로 이동해보면 'bye'문구가 적혀있는 alert창이 뜨게 된다. join.php의 소스코드를 확인해보면 javascript가 난독화 되..

[webhacking.kr] 4번 문제

300점인 4번 문제를 풀어보도록 하자. 첫번째 화면에 문자,숫자 조합과 패스워드를 입력하는 곳과 소스코드를 보는 곳이 나오게 된다. SQL Injection을 시도해봤지만 별다른 응답값이 없어 소스코드를 확인해 보도록 하자. 소스코드 확인 후 문제의 제일 상단에 위치한 40자의 문자열은 500 sha1 hash 매핑된 값으로 확인할 수 있었다. 우리는 $_SESSION['chall4'] 값만 알아내면 문제를 풀 수 있다. 이제 40자의 문자열을 가지고 패스워드를 알아내야 하지만, sha1은 일방향 해시함수이기 때문에 복호화가 불가능 하다. 그렇기 때문에 우리는 레인보우 테이블을 사용할 것이다. 레인보우 테이블은 hash 결과에 대한 사용자 사전이다. hash 결과들을 축적시킨 데이터(사전)을 만들어두면..

[webhacking.kr] 3번 문제

3번 문제는 350점짜리 문제이며, 문제를 클릭하게 되면 네모로직 문제가 나오게 된다. 검은색 칸을 채운 후 solved 버튼을 누르게 되면 다음과 같은 페이지로 이동한다. 해당 입력 창에 임의의 텍스트를 입력하게 되면 name, answer, ip값이 출력된다. 여기에서 유추해볼 수 있는 부분은 answer 쪽을 참으로 변환시켜 전송하게 되면 문제를 해결할 수 있을 것 같다. ' or '1'='1--을 answer 값 뒤에 대입한 후 재전송해본다. 문제가 풀렸다는 alert창이 뜨게 된다.

[Web Hacking] WebGoat SQL Injection(mitigation) 문제풀이

※ 선행 학습 필요 개념 Order by 절 SELECT문으로 검색된 데이터를 오름차순(ASC)이나 내림차순(DESC)으로 정렬시킬 때 사용한다. Default 값은 Ascending(오름차순)으로 ASC는 생략해도 되며, 문자는 알파벳 순서로 출력된다. ORDER BY절에 선택된 컬럼이 여러 개일 경우 앞(왼쪽)에 정의된 컬럼을 기준으로 먼저 분류한 후, 이후에 나열된 순서대로 분류한다. Order by가 SQL Injection에서 쓰이는 경우는 컬럼(속성)의 수를 확인하기 위함이다. 예를 들어 컬럼이 두 개인 테이블에 쿼리문을 확인해보자 1) select * from table_name where name="a" order by 2; (정상 출력) 2) select * from table_name ..

[Bug Bounty] 네이버 버그 바운티 프로그램

Naver Bug Bounty Program https://bugbounty.naver.com/ko/ Naver Bug Bounty 네이버 버그 바운티 프로그램은 네이버 서비스의 취약점을 조기에 찾아 사용자들에게 안전한 서비스를 제공하기 위한 프로그램입니다. 전 세계의 보안 전문가들의 도움으로 네이버 서비스의 보안 취약점을 빠르게 찾아 고치고, 보안 전문가들의 노력에 적절한 포상을 지급함으로써 네이버 서비스를 더욱 안전하게 만드는 일을 장려합니다. bugbounty.naver.com

[Web Hacking] WebGoat SQL Injection(advanced) 3 문제풀이

※ 선행 학습 필요 개념 Union SQL Injection 2개 이상의 쿼리를 요청하여 결과를 얻는 UNION 연산자를 이용해 SQL Injection 공격을 가하는 것을 말하며 공격자는 이 연산자를 이용하여 원래의 요청에 한 개의 추가 쿼리를 삽입하여 정보를 얻어낸다. 공격이 가능한 전제 조건은 컬럼의 수가 같아야 하며 데이터 형식도 같아야 한다. step 1. 컬럼 갯수 알아내기 갯수를 알아내기 위해 앞의 쿼리문에 이어서 union select 1, %23 으로 쓴다면 에러가 뜰 것이다. 그러나 union select 1, 2, %23 => union select 1, 2, 3, %23 ... 순으로 컬럼의 갯수를 늘려가다보면 에러가 나지 않는 때가 나올때, 즉 컬럼의 갯수가 일치할 때를 알 수 있..

[webhacking.kr] 2번 문제

2번 문제를 클릭하게 되면 다음과 같은 화면만 보이게 된다. 이것만 가지고는 힌트를 얻을 수 없기 때문에 개발자 모드로 진입하여 확인해보기로 한다. 개발자 모드에서 확인해보면 주석으로 '만약 admin.php에 접근한다면 엉덩이를 걷어차버릴 거야'라는 문구를 확인할 수 있다. 혹시 모르니 url 뒤에 admin.php를 붙여 이동해보도록 하자. 하지만 해당 화면에서 pw 부분에 SQL Injection을 시도해보았지만 wrong password alert만 뜨게 된다. 다시 원점으로 돌아가 주어진 힌트들에 대해서 검토해보기로 하자. 처음에 개발자 모드에서 확인했던 HTML 코드를 다시 확인해보면 현재 날짜 및 시간이 주석처리 되어 있는 것을 확인할 수 있다. 단서를 찾기 위해 Cookie Editor를 ..

[webhacking.kr] 1번 문제

webhacking.kr 1번 문제를 클릭하게 되면 다음과 같은 화면이 나타나게 된다. 여기에서 view-source를 클릭해주면 다음과 같은 소스코드를 확인할 수 있다. 해당 PHP 소스를 살펴보게 되면 COOKIE['user_lv']값이 5보다 크면 solve()함수가 동작하지만 6보다 크거나 같다면 COOKIE['user_lv']값이 1로 반환된다고 나와있다. 즉, 쿠키값을 5보다 크고 6보다 작은 수를 넣어주면 문제를 해결하게 된다. 이제 해당 페이지의 쿠키 값을 확인하기 위해 Firefox의 Cookie-Editor를 설치한다. 설치 후, 쿠키 값을 확인해 보면 현재 값이 1로 되어있는 것을 확인 할 수 있다. 이제 이 값을 5.1로 바꿔고 저장한 다음, 새로 고침을 해보면 문제가 해결됬음을 알..

반응형