write-up(web)/webhacking.kr

[Webhacking.kr] old-02

문제 if you access admin.php ~ webhacking.kr/challenge/web-02/admin.php admin.php 페이지를 확인할 수 있다. 비밀번호를 찾으면 문제 해결된다. 문제 풀이 비밀번호를 찾기 위해서 이전 페이지로 돌아간다. 쿠키의 값에 따라 주석이 변화하는 것을 확인할 수 있다. SQLI 공격이 가능한 것을 확인할 수 있다. SQLI - 테이블 개수 확인 select count(table_name) from information_schema.tables where table_schema=database() SQLI - 테이블 이름 길이 확인 select length(table_name) from information_schema.tables where table_s..

[Webhacking.kr] NotSQL

문제 각각 파라미터 no이 1일 때와 2일 때의 결과이다. 문제풀이 view.php에 query 매개변수를 전송할 때, 아래와 같은 결과를 볼 수 있다. 빈 쿼리를 날릴 때 결과는 아래와 같다. SQL의 information_schema.tables 처럼 작동하는 쿼리인 query{__schema{types{name}}}을 전송하면 아래와 같다. 필드 이름을 알아내기 위해 전송하면 결과는 아래와 같다. 위에서 얻은 정보를 바탕으로 쿼리를 날리면 flag 값을 얻을 수 있다.

[Webhacking.kr] old-56

문제 검색창에 내용의 문자를 검색하면 문자가 포함된 글의 목록을 보여준다. flag{ 를 검색하면 admin 목록이 뜬다. flag{로 시작하는 문자열을 검색하며 플래그 값을 찾으면 문제가 해결될 것 같다. 문제풀이 search 검색창 최대길이는 50이므로 50 길이만큼 문자를 검색했다. import requests cookie={'PHPSESSID':''} url="https://webhacking.kr/challenge/web-33/" # flag flag="flag{" data={'search':""} for i in range(50): for j in range(48,128): data['search']=flag+chr(j) res=requests.post(url, data=data) if (re..

[Webhacking.kr] old-55

문제 flag 값은 테이블의 세번째 컬럼에 위치하는 것을 알 수 있다. 문제풀이 score 누르면 아래 그림과 같이 아이디와 점수가 나온다. score를 조작하여 blind injection을 할 수 있다. procedure analyse()를 통해 세번째 컬럼을 확인한다. length를 통해 flag의 길이를 구하고, susbstr를 통해 문자를 구하려고 했는데, substr 이용하면 "no hack" 화면이 뜨며 필터링 되는 것을 확인할 수 있다. 검색을 통해 right&left 함수가 susbtr 함수와 동일하게 동작할 수 있는 것을 알게 되었다. 이를 바탕으로 코드는 아래와 같다. import requests import string cookie={"cookie":"'PHPSESSID'=''"} ..