전체 글 썸네일형 리스트형 [webhacking.kr] prob 7 auth 버튼을 누르면 단순히 alert() 만 띄워주게 됩니다.실질적으로 URL을 보면 val라는 인자가 추가 되어있는데 해당 값을 2로 넘겨주면 성공하는 문제입니다. 소스를 보면 val=2는 없다 하고, union을 사용하라는 말이 있습니다.union sql injection을 이용해 문제를 해결하면 됩니다. Injection Pointer는 select문입니다. $go 변수에 알맞은 union select를 입력하면 됩니다. rand 함수로 괄호의 개수만 다른 Query가 있지만 여러 번 반복하면 되니 하나의 Query에 집중합니다. 결국 Union SQL Injection을 하여 data[0]에 2가 오면 성공합니다. 우선 다른 숫자나 필터링된 문자열을 입력하면 Access Denied!가 나오게.. 더보기 [webhacking.kr] prob 59 JOIN을 해서 가입 후 LOGIN을 하는데 lv 값이 'admin'이여야 합니다. JOIN에 대한 소스를 확인해보면 id, phone에서 다양한 필터링을 하고 있고,insert문에 'guest'가 하드코딩 되어있어 'admin'으로 바꿔주는 과정이 필요합니다. 간단하게 test/1 로 가입을 해봤는데 lv이 'guest'로 나와있는 것을 보면 insert문에 마지막 부분은 lv칼럼인 것이 확실해 졌습니다. 처음에 id부분에 별다른 필터링이 없기에 해당 부분을 공략했습니다.insert into c59 values('hi',1,0x61646d696e)--',1,'guest')하지만 해당 값은 싱글쿼터가 서버에서 막혀있는지 실행되지 않았습니다. 싱글쿼터를 사용하지 않고 해결을 해야 할 것으로 보이는데 pho.. 더보기 [webhacking.kr] prob 49 값을 1을 입력할 때는 zzibong가 나오고 다른 값을 입력하면 아무것도 나오지 않습니다. ① union select 필터링② order by 필터링③ limit 필터링이 되어 있습니다.해당 방법들을 제외하고 문제를 해결해야 합니다. 우선 lv 값을 모르기에 새로운 조건으로 검색하기 위해서 or를 대신한 || 를 사용합니다.공백과 %09을 대신해서 %0a로 대신합니다.또한, 싱글쿼터가 막혀있어 HEX값으로 대신합니다. 그렇게 만들어지는 값인 2%0a||%0aid=0x61646d696e 를 URL에 입력하면 성공합니다.URL이 아닌 TEXT BOX에 입력하게 되면 URL 인코딩되어 올바른 값을 전달할 수 없습니다. 더보기 [webhacking.kr] prob 3 네모네모 로직이라는 게임이 나오게 됩니다.해당 칸을 클릭하면 검은색으로 변하게 되고 문제를 풀면 넘어갈 수 있습니다. 성..? 넘어가면 다음과 같은 입력 창이 나오게 되고, URL에 많은 파라미터 값들이 추가 됩니다. http://webhacking.kr/challenge/web/web-03/index.php? _1=1&_2=0&_3=1&_4=0&_5=1&_6=0&_7=0&_8=0&_9=0&_10=0&_11=0&_12=1&_13=1&_14=1&_15=0&_16=0 &_17=1&_18=0&_19=1&_20=0&_21=1&_22=1&_23=1&_24=1&_25=1&_answer=1010100000011100101011111 아무 값이나 입력하면 로직에 대한 값과 IP가 입력됩니다.무슨 값을 입력해도 해당 형.. 더보기 [webhacking.kr] prob 36 vi가 정전 되었다고 합니다.정전은 보통 작동 중에 갑자기 전원이 나가서 발생하는 일인데vi를 사용 중에 갑자기 꺼졌다고 생각하면 될 것 같습니다. vi는 linux에서 사용하는 문서 편집기로 windows에 메모장과 비슷한 역할을 합니다.하지만 vi를 사용할 때 갑작스럽게 종료가 되면 swap 파일이라는 복구 파일이 생기게 됩니다.해당 파일을 이용해서 하던 작업을 잃지 않고 복구 할 수 있게 됩니다. 처음 문제 페이지의 파일 명은 index.php입니다.이 파일을 vi로 사용해서 편집 중에 정전이 났다고 생각하면 .index.php.swp 라는 파일을 만들었을 것입니다.하지만 해당 문제는 해결되지 않고, 고장 났거나 해당 파일이 지워진 것 같습니다. 더보기 [webhacking.kr] prob 39 id부분에 '(싱글쿼터)가 한 개 부족해서 오류가 납니다.하지만 str_replace()를 통해서 싱글쿼터가 입력되면 두 개로 증가하고, \도 지워지기 때문에 Query를 완성할 수 없습니다. 값을 입력하면 다음과 같은 Error 메시지가 나오게 됩니다. 쿼리를 올바르게 완성할 수 있다면 해결할 수 있는 문제입니다.중간에 보면 substr($_POST[id],0,15)는 문자열을 15개까지만 받게 만들고 그 이상은 버리게 됩니다.그렇다면 마지막 15번째 문자가 '(싱글쿼터)가 되면 15,16번째가 ''로 새로 생긴 '(싱글쿼터)는 사라지게 됩니다. DB에서 문자열을 비교할 때 특정한 상황이 있습니다. 'a' = 'a '를 입력하면 False가 나와야 하는데 True가 나오게 됩니다.비교하는 값의 길이가 .. 더보기 [webhacking.kr] prob 53 $hidden_table의 값을 알아내는 문제입니다.하지만 다양한 문자들이 필터링 되고 있어 쉽지 않았습니다. 우선 val값에 1을 넣어보니 test라는 값이 나오게 됩니다.2,3,4 차례대로 넣어보면 guest,admin,zombie가 나오게 됩니다. 어떻게 해결할까 찾아보다 mysql에 procedure analyse() 라는 함수가 있었습니다.해당 함수는 현재 실행 중인 칼럼에 대한 정보를 알려주는 역할을 합니다.즉, $hidden_table의 정보를 알려준다는 말입니다. 그렇게 ?val=1 procedure analyse()를 입력하면 다음과 같이 테이블 명을 알 수 있게 됩니다. [참고]SQL Injection(MySQL) - procedure analyze(): http://hyunmini.t.. 더보기 [webhacking.kr] prob 52 HEADER INJECTION은 개행 문자를 이용해 HTTP Header 값을 조작하는 행위입니다.Header는 개행 문자로 그 값을 구분하게 되는데 임의로 %0d%0a를 입력해 새로운 값을 넣을 수 있습니다. 그 예로 Set-Cookie: id=btr95 와 같이 쿠키 값도 입력할 수 있습니다. 우선 header가 전송되는 것을 확인해 봅니다.id=btr95가 GET 방식으로 전송되는 것을 확인 할 수 있고.Response부분에도 해당 값이 전송된 것을 확인할 수 있습니다. 하지만 실제 공격 코드인 %0d%0aSet-Cookie:%20id=btr95 를 입력해보면 Response에 아무런 값도 나오지 않게 됩니다. 옳은 값인데 왜 안되나 싶어 찾아보니...문제에서 clear: btr95 를 주어줬고 해.. 더보기 이전 1 2 3 4 ··· 18 다음