본문 바로가기

분류 전체보기257

lord of sql injection 27번 - blue_dragon 이번 문제는 '와 \가 필터링 되는 문제여서 우회하기가 어렵다. 대신 sleep 함수를 막지 않는것으로 보아 time based SQLI를 사용하면 될것같다. 쿼리를 사용했을때 메시지가 뜨지 않아도 sleep() 을 장시간으로 해서 주면 메시지가 뜰때 메시지대신 페이지 로딩 시간이 길어질 것이다. if문으로 length를 검증하고 sleep(3) 을 주어 참이면 3초간 sleep 후 페이지를 로딩하게 했다. length 비교값에 8을 주니 갑자기 페이지가 3초동안 로딩되었다가 불려졌다. 이를 보고 pw 길이가 8자리라는 것을 알아내었다. 이제 이를 이용해서 pw 값을 알아내면 된다. ord와 substr 함수를 이용해 알아보았다. blue-dragon.py import urllib.request impo.. 2023. 12. 22.
lord of sql injection 26번 - red_dragon 이번문제는 조금 어려웠다. id는 값을 받는데 7자를 넘으면 안되고 no는 숫자외의 값이 들어가면 다 1로 리턴시킨다. 고민해본 결과 id에 쿼리를 넣고 no에 비교할 숫자를 넣어야 하는 문제이다. 우선 id 값에 admin%23 을 넣어주면 뒤의 구문이 주석화 되어 hello admin이 뜬다. 이를 이용하면 될것 같다. 우리가 찾아야하는건 admin의 no 값이다. 그러니 id값은 ''로 막아버린뒤 바로 or (||) 구문을 이용해서 no의 비교를 수행한다. 뒤의 and no=를 주석처리 한 뒤 줄바꿈하여 no에 숫자값을 넣어준다면 정상적으로 쿼리가 들어갈것이다. id='||no>%23&no=%0a10000 이라고 넣어주었다. id 값은 다행히 7자를 안넘어 들어가고 no도 줄바꿈하여 숫자를 넣어주었.. 2023. 12. 22.
lord of sql injection 25번 - green_dragon 이번에는 쿼리가 두개가 들어가있는 문제이다. 우선 \를 활용해 뒤에 구문을 넣어보았다. 이런 방식으로 넣어주면 되는데 우선 id='admin'을 호출해야하는데 ' 와 "가 필터링 되어있어 hex값으로 호출해보자. 그런데 해결되지 않았다. 아무래도 첫번째 쿼리에있는 테이블에 admin 자체가 없는듯 하다. 그러면 두번째 쿼리에 있는 곳에서 찾아야할듯 싶다. 두번째를 호출하기 위해 union select를 사용해보았다. union select 1,2 로 불러오니 두번째 쿼리가 불러와졌다. 여기서 두번째 쿼리에 아까 첫번째에서 했던것처럼 id에 \를 넣어주고 pw에 union select 0x61646d696e--+- 을 넣어주면 될것같다. https://www.branah.com/ascii-converter.. 2023. 12. 22.
lord of sql injection 24번 - evil_wizard 23번과 매우 유사한 문제인데 아무래도 필터링만 조금 더 늘어난듯 하다. 그런데 전 문제에서 현재 필터링에 걸릴만한 구문을 쓰지 않았기때문에 그냥 그대로 풀면 될것같다. 전과같은 구문으로 이메일 길이를 찾아본 결과 30의 길이가 나왔다. 전에서 사용하던 코드를 그대로 사용했다. 코드를 실행하니 aasup3r_secure_email@emai1.com 라는 값이 나왔다. 2023. 12. 22.