Wargame/webhacking.kr(30)
-
webhacking.kr 53번 문제(old)
53번의 문제는 이러하다. 소스코드를 해석해보면 숨겨진 테이블의 이름을 찾아내고 그 값을 answer 에 입력해주면 풀리는 문제인것 같다. 여기서 문제를 풀기전에 procedure analyse() 함수에 대해서 알아야한다. mysql> select id from test where no=1 procedure analyse(); +--------------+-----------+-----------+------------+------------+------------------+-----+ | Field_name | Min_value | Max_value | Min_length | Max_length | Empties_or_zeros | Nulls | +--------------+-----------+-..
2019.10.18 -
webhacking.kr 25번 문제 (old)
25번 문제에 들어가면 출력되는 화면이다. -rw-r--r-- 1 root root 이런식으로 적혀있습니다. 이 기호는 리눅스에서 쓰이는 기호입니다. 그리고 문제의 주소창을 보면 GET 방식으로 파일명을 받아오는것 같습니다. 그리고 그 파일을 저 회색 화면에 출력하는것 같습니다. 근데 화면에는 파일명이 hello.php 라고 출력이 되어있는데 왜 주소창에는 hello 만 적혀져 있는것일까요? 아마도 주소창에서 받은 값에 .php 라는 문구를 더해줘서 ?file=hello 라고 적었으면 ?file=hello.php 라고 인식되는것 같습니다. (뇌피셜...) 그러니 일단 flag.php 파일을 열기 위해서 주소창에 flag 를 입력해봅시다. 위의 사진을 보면 FLAG is in the code 라는 문구가 ..
2019.10.16 -
webhacking.kr 7번 문제 (old)
7번문제에 들어가면 다음과같은 화면을 볼 수 있다. 바로 auth 를 눌러서 인증을 해보자. 역시 바로 인증 권한을 주진 않는것 같다. 그럼 소스를 확인해보자. 소스를 확인해보면 GET방식으로 받은 값을 go 변수에 저장하고 필터링을 거친 후에 아래 5개의 조건문으로 거쳐가는것 같다. 마지막 elseif 부분을 보자면 data 의 값이 2이면 solve함수가 실행된다. 이 것을 보면 go 의 값에 2라는 값을 넣어주어서 lv를 2로만들어주면 풀릴 것 같다. 하지만 그전에 preg_match() 함수를 통해서 사칙연산과 2 , = 등을 필터링해주어서 2를 직접적으로 입력하거나 또는 1+1 , 3-1 등과같은 결과값으로 2를 만들어 주지 못한다. 하지만 절대 2를 만들수 없는건 아니다. char() 함수나 ..
2019.10.16 -
webhacking.kr 27번 문제(old)
27번 문제의 메인 페이지이다. 바로 소스를 확인해보자. 이 문제는 id 의 값이 admin 이면 풀리는 문제인것 같다. 하지만 저 코드에서 쿼리문 부분을 보면 id의 값이 guest로 지정되어있다. 그리고 아래 보면 주석처리로 // admin's no=2 라고 적혀져 있다. 아마 저 주석을 이용해서 문제를 풀 수 있을것 같다. 우선 메인페이지에서 아무값이나 넣어보며 결과를 확인해보자. 이 사진들은 각각 1,2를 입력했을때의 화면이다. 1을 입력했을때에는 guest가 2를 입력했을땐 query error 가 출력되었다. 아까 주석에서 admin의 no 값은 2라고 했으니 쿼리문을 조작해서 no 의 값을 2로 만들어 보자 0) or no like 2 preg_match()필터링을 위해서 위와같은 쿼리문을 ..
2019.10.15 -
webhacking.kr 26번 문제(old)
바로 소스를 확인해봅시다. 소스만 보면 매우 간단한 문제인것 같습니다. GET 형식으로 받은 id 값이 admin 이면 풀리는것 같습니다. 하지만 조건문 보다 위에 preg_match 함수로 admin이란 값을 필터링 하고있기 때문에 admin이란 값을 넣어줄 수 없을 것 같습니다. 또한 그 밑에 id의 값을 urldecode() 함수를 통해서 변조시키는 것을 확인할 수 있습니다. 그럼 admin 의 값을 url 인코딩을 해서 입력해 봅시다. url 인코딩 표를 이용해서 admin을 바꾸면 %61%64%6D%69%6E 의 값이 됩니다. 그럼 이 값을 ID 로 입력해 봅시다. 위처럼 no! 라고 합니다. 맨 처음 조건절에서 preg_match() 함수에 막힌것 같습니다. 그 이유는 웹서버와 브라우저 사이에..
2019.10.15 -
webhacking.kr 24번 문제(old)
24번 문제의 메인 화면입니다. 바로 소스를 확인해봅시다. 소스를 해석해보면 우선 IP가 127.0.0.1 이면 풀리는것 같고 그 전에 조건문에서 str_replace()함수를 통해서 .. -> . , 12 -> "" , 7. -> "" , 0. -> "" 으로 각각 변환된다. 실제로 값을 넣어서 어떻게 조작되는지 확인해보자. 쿠키값의 이름으로 REMOTE_ADDR 이라는 이름을 지정해주고 값으로 127.0.0.1을 입력해주었다. 그랬더니 메인페이지의 client ip 창에 1이라는 숫자밖에 남지 않았다. 이러한 현상의 이유는 127.0.0.1 의 값을 넣어줬는데 12(공백으로 변환)7.(공백으로 변환)0.(공백으로 변환)0.(공백으로 변환)1 이 되어서 1만 남게 된 상황이다. str_replace()..
2019.10.15