write-up(web)/los

[LOS] ouroboros - zombie

문제 https://los.rubiya.kr/chall/ouroboros_e3f483f087c922c84373b49950c212a9.php los.rubiya.kr https://los.rubiya.kr/chall/zombie_78238dee92f8ed0f508b0e9e00fc0e49.php los.rubiya.kr 문제풀이 참이 조건을 넣었을 때 반환값이 없다. pw 컬럼이 아마 비어있는 것 같다. union select를 이용해서 입력하면 출력이 된다. 이 때, pw파라미터에 전달한 값과 출력되는 값이 같아야 한다. 어떻게 출력해야 할지 감이 안와서 검색하니 quine 을 사용해야 한다고 한다. quine은 자기 자신 소스코드를 출력하는 프로그램이다. 아래 페이로드를 작성하면 된다. 'union se..

write-up(web)/los 2023.11.10

[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

[LOS] green_dragon

문제 https://los.rubiya.kr/chall/green_dragon_74d944f888fd3f9cf76e4e230e78c45b.php https://los.rubiya.kr/chall/green_dragon_74d944f888fd3f9cf76e4e230e78c45b.php los.rubiya.kr 문제풀이 select id,pw from prob_green_dragon where id='\' and pw='or 1=1%23' 백슬래시를 이용해 따옴표를 문자처리하고, 그 뒤 문장을 참으로 만들어준다. 올바른 구문이지만 결과가 나오지 않는다. 선택된 id, pw가 없기 때문에 union 구문을 이용해야 한다. select id,pw from prob_green_dragon where id='\' ..

write-up(web)/los 2023.01.28

[LOS] hell_fire

문제 https://los.rubiya.kr/chall/hell_fire_309d5f471fbdd4722d221835380bb805.php https://los.rubiya.kr/chall/hell_fire_309d5f471fbdd4722d221835380bb805.php los.rubiya.kr 문제풀이 order 파라미터를 입력받아 정렬을 해준다. if문 조건에 따라 다른 결과값을 이용해 blind injection을 시도한다. 참일 경우 admin id가 첫번째로 나오는 것을 볼 수 있다. 이를 이용해 admin id의 email을 구할 수 있다. - admin email 길이 - admin email - 파이썬 코드 import requests cookie={'PHPSESSID':''} url="..

write-up(web)/los 2023.01.25

[LOS] dark_eyes

문제 https://los.rubiya.kr/chall/dark_eyes_4e0c557b6751028de2e64d4d0020e02c.php https://los.rubiya.kr/chall/dark_eyes_4e0c557b6751028de2e64d4d0020e02c.php los.rubiya.kr 문제풀이 이전 문제와 비슷하나 if 문을 쓸 수 없다. union을 사용해서 문제를 해결할 수 있다. 1 부분에 pw을 구하는 식을 넣어 blind injection을 수행하여 pw의 길이와 문자열을 구할 수 있다. ?pw=' || (select 1 union select 2)# --> 빈 화면 출력 - pw 길이 - pw 문자열 - 파이썬 코드 import requests cookie={'PHPSESSID':..

write-up(web)/los 2023.01.24

[LOS] iron_golem

문제 https://los.rubiya.kr/chall/iron_golem_beb244fe41dd33998ef7bb4211c56c75.php https://los.rubiya.kr/chall/iron_golem_beb244fe41dd33998ef7bb4211c56c75.php los.rubiya.kr 문제풀이 이전 문제들과 다르게 쿼리문이 잘못되었을 때 에러문만 출력된다. 이를 이용하여 if문과 잘못된 쿼리문으로 blind injection을 시도하여 pw의 길이와 문자열을 추측할 수 있다. (error based sql injection) - 파이썬 코드 import requests cookie={'PHPSESSID':''} url="https://los.rubiya.kr/chall/iron_golem..

write-up(web)/los 2023.01.24