write-up(web)

[LOS] phantom

문제 https://los.rubiya.kr/chall/phantom_e2e30eaf1c0b3cb61b4b72a932c849fe.php los.rubiya.kr 문제풀이 문제가 풀리는 부분을 보니, no=1인 email의 값을 알아내야 한다. if(($result['email']) && ($result['email'] === $_GET['email'])){ mysqli_query($db,"delete from prob_phantom where no != 1"); solve("phantom"); } no, ip, email 순서로 데이터베이스에 삽입되며, IP주소는 자동으로 설정된다. joinmail 파라미터를 통해 다중 값을 삽입할 수 있다. "insert into prob_phantom values(0..

write-up(web)/los 2023.11.04

[LOS] frankenstein

문제 https://los.rubiya.kr/chall/frankenstein_b5bab23e64777e1756174ad33f14b5db.php los.rubiya.kr 문제풀이 error based injection이다. union, (, ) 등 문자열이 필터되어서 select 1 union select 2로 에러를 낼 수 없다. 9e307 * N를 이용할 수 있는데, 9e307 * N은 최댓값 범위를 넘어서서 에러가 난다. 괄호 없이 에러를 발생시키기 위해 case when then else end 을 사용할 수 있다. case when 조건 then 참일 때 else 거짓일 때 end 몇글자인지 몰라서 10자리로 해서 코드를 작성했다. import requests import time cookie ..

write-up(web)/los 2023.11.04

[LOS] blue_dragon

문제 https://los.rubiya.kr/chall/blue_dragon_23f2e3c81dca66e496c7de2d63b82984.php los.rubiya.kr 문제풀이 id가 admin인 pw를 알아내면 된다. 작은 따옴표가 필터링되어 구문을 조작하여 알아낼 수가 없다. 위 코드를 보면 query문을 전송하고, 그 다음에 preg_match()를 통해 필터링한다. 이를 이용해서 time based injection이 가능하다. import requests import time cookie = {'PHPSESSID':'13l0s9eggfb6mttoaqkr15jkhu'} url = "https://los.rubiya.kr/chall/blue_dragon_23f2e3c81dca66e496c7de2d6..

write-up(web)/los 2023.11.03

[Webhacking.kr] old-30 (X)

문제 문제풀이 데이터베이스 반환 결과가 존재할 때, flag 출력한다. 페이지에 접근하면 flag 출력되지 않는데, 데이터베이스 연결이 되지 않았거나 데이터가 존재하지 않아서이다. mysqli.connect() 함수에 아무것도 설정되지 않았다. 설정하지 않으면 php.ini에 설정된 디폴트 값을 전달한다. public mysqli::__construct( ?string $hostname = null, ?string $username = null, ?string $password = null, ?string $database = null, ?int $port = null, ?string $socket = null ) .htaccess 파일을 이용해 php.ini 파일 설정 값을 변경할 수 있다. php_v..

[Webhacking.kr] old-29

문제 flag는 다른 테이블에 있다. 문제풀이 테스트로 파일 하나를 올리면 아래와 같이 화면에 나타나며, 파일에 접근은 불가하다. burp suite로 잡아보면 filename 파라미터가 전송되는 것을 알 수 있다. ip와 time은 자동으로 설정된다. filename 파라미터를 조작하여 sql injection을 시도할 수 있다. 아래처럼 파라미터 조작해서 전송하면 변조된 값들이 화면에 보인다. time이 변조되어 전송되었다. filename="filename,1,'115.92.150.222')#" 화면에 나타나는 것과 다르게 ip주소는 세번째에 입력되어야 한다. 그리고 IP주소가 정확해야 전송된다. sql 쿼리에 맞지 않거나 IP주소가 틀리거나 삽입되는 컬럼 순서가 다르면 upload error! 가..