본문 바로가기

웹해킹59

webhacking.kr 29번 Webhacking.kr#29 29번 문제를 열면 아래와 같은 힌트를 볼 수 있다. 우선 파일을 업로드해보았다. 위와 같이 Done이라는 메시지와 함께time, ip, file 정보가 출력되는 것을 볼 수 있다. 힌트에서select password from c29_tb라고 되어 있는 걸을 보면파일을 업로드할 때, 파일 이름, time, ip정보가 c29_tb 테이블에 저장될 것임을 알 수 있다. 쿼리문은 아마 아래와 유사한 형태를 가질 것으로 추정된다.Insert into c29_tbValues (time, ip, file) 이 때, file 이름을 이용하여 select 문을 수행하도록 하면 패스워드를 얻을 수 있을 듯하다. 그런데 time, ip, file이 실제 쿼리문에서 어떤 순서로 되어 있는 지를.. 2019. 1. 29.
webhacking.kr 15번 15번 문제를 열면 내용을 확인하기 전에 Access_Denied라는 창이 나오는 것을 볼 수 있다. 따라서 Burp Suite를 이용하면아래와 같이 패스워드를 확인할 수 있다. 2019. 1. 29.
webhacking.kr 13번 [Blind SQL Injection] 13번 문제를 열면 아래와 같은 화면을 볼 수 있다. 먼저 no에 1을 입력하면 result로 1이 나오는 것을 볼 수 있다. 왠지 true와 false에 대해 result를 반환해주는 듯하여실제로 true와 false를 입력하면 각각 1과 0이 출력된 것을 볼 수 있다. 따라서 이 점을 이용하여 flag를 얻으면 된다.Select flag from prob13password라는 힌트를 이용하기 위해먼저 flag가 존재하는 지 확인하는 쿼리를 작성했다. ( select ( count(flag) ) from ( prob13password ))in(1) (이 문제는 다른 문제에 비해 필터링이 더 많이 처리되어 있었다.아래 인풋 값들은 입력이 가능한 것들을 이용하여 작성.. 2019. 1. 29.
webhacking.kr 9번 Webhacking.kr#9[Blind SQL Injection] 9번 문제를 열면 아래와 같은 화면을 볼 수 있다.우선 1, 2, 3을 눌러보았다. 아래와 같이 1을 누르면?no=1을 수행하고Apple이 나타난다. 2는?no=2이며Banana가 나타난다. 3은 마찬가지로?no=3 이며Secret이 나타난다. 1, 2, 3 이외의 숫자를 입력하면 어떻게 되는지 알기 위해0을 입력해보면 아래와 같이 첫 화면에서 봤던 페이지가 나온다. 이 점을 이용하면 Blind SQL Injection이 가능할 것으로 보인다.위의 페이지에서 힌트로 주어진 컬럼인 id와 no를 보면 no가 1일 때의 id는 Apple일 것으로 추정된다. 따라서 먼저 id의 길이가 5인지 확인해보면 아래와 같이 맞다는 것을 알 수 있다. 참.. 2019. 1. 29.
webhacking.kr 3번 3번 문제를 열면 아래와 같은 화면을 볼 수 있다. 우선 퍼즐(네모로직)을 풀면 아래와 같이 된다. 그리고 gogo 버튼을 누르면 name을 입력하는 창이 나온다. name을 입력하니 아래와 같이 name, answer, ip가 입력된 것을 볼 수 있다. 이 때, 위의 결과 페이지로 갈 때 우리가 입력한 name 뿐 아니라hidden 으로 answer가 전달되는 것을 볼 수 있다. 따라서 이 answer를 true로 만들기 위해 원래 값 뒤에||1 을 입력하였다. 그 결과, answer에 new_sql_injection이 나오는 것을 볼 수 있다. 이 값으로 인증하면 clear할 수 있다. 2019. 1. 29.
webhacking.kr 2번 [Cookie-Based SQL Injection, Blind SQL Injection] 2번 문제를 열면 아래와 같은 화면을 볼 수 있다. 페이지 곳곳을 둘러 보면 패스워드를 입력받는 곳을 두 군데 볼 수 있다.첫 번째는 Board이다. 두 번째는 아래와 같은 admin 페이지이다. 이 때 패스워드 창 자체에서는 SQL Injection이 힘들어서 페이지 내에서 다른 요소들을 찾아야 한다. 이 때, 쿠키를 보면 다른 문제들과 달리 time이라는 쿠키 값이 있는 것을 볼 수 있다. 또한 페이지 내의 주석을 보면 시간이 나타나 있는 것을 볼 수 있다. 쿠키 값과 관련이 있는 듯하여 time을 true로 바꾸어 보았다. 그 결과, 2070-01-01 09:00:01 이 나타난다. false일 때 또한 확인해.. 2019. 1. 29.
webhacking.kr 8번 8번 문제를 열면 아래와 같은 화면을 볼 수 있다. 아래는 index.phps 코드이다. 우선 clear하기 위해서는 admin이어야한다.이 때, insert하는 쿼리를 볼 수 있는데 values를 이용하기 때문에 이 점을 활용하면 id를 admin으로 만들 수 있을 듯하다. 따라서 먼저 Burp Suite를 이용하여 User-Agent를 aaa로 변경하였다. 그 결과, hi guest가 출력된 것을 볼 수 있다.Insert가 정상적으로 수행된 것으로 보인다. 이제 admin을 넣을 것이다. insert into lv0(agent, ip, id)values(‘a’, ‘1.1.1.1’, ‘admin’), (‘b’, ‘$ip’, ‘guest’)처럼 동작하게 하기 위해 a’, ‘1.1.1.1’, ‘admin’.. 2019. 1. 29.
webhacking.kr 35번 [SQL Injection] 35번 문제를 보면 아래와 같이 phone을 입력받고 있다. 아래는 index.phps 코드이다. clear하기 위해서는 admin의 ip와 $_SERVER[REMOTE_ADDR]이 일치해야한다.이 때, 쿼리문을 보면 insert into를 수행하는 것을 볼 수 있다.우리가 입력한 값인 phone은 values()의 마지막에 들어가는 것을 볼 수 있다. 이 점을 이용하여 id는 admim, ip는 본인의 ip로 설정하면 될 것으로 보인다. 이 것은 mysql에서 insert into - values - 를 수행할 때 여러개의 value_list를 허용하기 때문에 가능하다. 예를 들면,insert into challenge35_listvalues (‘sand’, ‘0.0.0.0.. 2019. 1. 29.
webhacking.kr 32번 32번 문제를 보면 아래와 같은 랭킹 페이지를 볼 수 있다. NAME을 눌러보면 HIT이 1 증가한 것을 볼 수 있다. 가장 아래에 있는 join 버튼을 누르면 목록에 id가 추가된다. 그리고 해당 id를 클릭하면 마찬가지로 HIT이 1 증가한 것을 볼 수 있다. 이 때, 다시 클릭하면 no라는 메시지가 나오는 것을 볼 수 있다. 중복으로 누르는 것을 막아놓은 듯하여 쿠키 값을 보니vote_check 항목에 ok라는 값이 들어가 있는 것을 볼 수 있다. 따라서 이 쿠키 값을 지워 HIT을 100으로 만들면 clear할 수 있을 것으로 보인다.이를 자동화하기 위해 python을 이용하였다.Params에 PHPSESSID 쿠키 값만 전달하고 vote_check 를 전달하지 않았다. 그 결과 clear할 수 .. 2019. 1. 29.