웹해킹(10)
-
[webhacking.kr] Challenge_old-39 문제풀이 (SQL injection)
SQL Injection 이라고 하면 할수 있는 39번. 입력값을 받고있는 페이지만 존재한다. 소스코드를 보면 post로 id 변수값을 받고 있다. 쿼리문을 자세히 보면 id값을 닫는 '(싱글쿼터)가 존재하지 않음. 정상적인 쿼리가 동작하려면 우리가 닫아줘야 한다. 필터링을 보니 \가 들어오면 없애고, '가 들어오면 ''두개로 만들고있다.그리고 substr로 들어온 id값을 15개만 잘라서 db로 넘기고 있다. substr 를 이용해서 15자리에 '을 입력해주면 ''로 바뀌지만 db로 넘길때는 15자리까지만 넘기니까 전달되는 값은 admin''으로 바뀌지만 15자리까지 잘라버리니까 admin'만 남게된다. 문자열은 14자리 이하로 아무거나 입력해도 되고(입력 안해도 됨) 자릿수만 맞춰서 15번째 자리..
2024.08.04 -
[webhacking.kr] Challenge_old-16 문제풀이
문제에 접속하면 위와 같이 *이 나타나고 있다. 소스코드를 보면 //do it!이라고 적혀있는 주석이 보인다. mv()라는 함수를 이용해서 저 *의 위치를 변경시키면 문제 풀이가 완료되는 것 같다. 개발자도구의 콘솔창으로 함수를 호출해주자.예상대로 해당 함수를 입력하니 *의 위치가 변경됐다. 해당 함수로 mv(124)를 호출하면 위와 같이 문제를 해결했다는 문구가 뜬다. 난 이미 푼 문제여서 이렇게 뜬다. [리뷰]자바스크립트 해석만 할 줄 알면 풀 수 있는 아주 간단한 문제이다.
2024.08.04 -
[webhacking.kr] Challenge_old-18 문제풀이
이번엔 SQL Injection문제다. preg_match로 DB에 접근할 수 있는 SQL 쿼리문을 필터링하는 것으로 보인다. select, from, &, |같은 문자를 대소문자 모두 확인해 아래와 같이 해킹하지 말라는 메세지로 돌려준다. DB쿼리를 보면 chall18 테이블에서 id가 guest이고 no가 입력값인 경우의 id를 가져와서 결과값으로 반환한다. 1을 입력하면 hi guest라는 메시지가 나온다. //admin's no = 2 라는 주석을 참고하여 url 뒤에 no=0%09or%09no=2라고 입력해 앞의 guest와 no를 확인하는 값을 false값으로 만들고 뒤에 or no=2를 입력해서 admin으로 접근 할 수 있다.
2021.11.14 -
[webhacking.kr] Challenge_old-17 문제풀이
17번은 js-4번으로 분류되어있다. 소스를 보면 check 버튼을 누르면 sub() 함수를 호출하는 것을 알 수 있다. 입력값이 unlock값과 같은 경우 unlock값을 10으로 나눈 값을 ?뒤에 붙이는 것으로 보여진다. 콘솔으로 unlock값을 계산해서 입력창에 넣었다. 아래와 같이 문제풀이에 성공하게 된다. url의 파라미터 값을 보면 소스에서 봤던 unlock을 10으로 나눈 값이 들어가있는 것을 알 수 있다. 즉, 입력값에 7809297.1을 넣거나, url 뒤에 ?780929.71을 넣으면 문제를 풀 수 있다.
2021.11.14 -
[webhacking.kr] Challenge_old-15 문제풀이
15번 문제를 클릭하면 처음부터 알림창으로 접근 거부되었다고 뜬다. 페이지 소스코드가 보이질 않으니 javascript인 alert()창을 실행시키지 않기 위해 설정에서 자바스크립트를 차단으로 바꾼다. 페이지 코드를 보니 / 루트로 보내버리는 것을 확인 버프로 잡은 response값을 아래와 같이 바꾼다. url에 ?getFlag를 입력하거나 위처럼 버프에서 /(루트)로 가는 locatoin.href='/';를 지우면 Get Flag로 이동할 수 있다. 문제풀이 성공~ -----------------------------------여담----------------------------------- 버프를 open browser로 사용하는 경우 버프에서도 response 패킷을 잡히게 설정해 놔야 넘어가는..
2021.09.19