los 문제 11

los 11 #golem 문제풀이

문제에 들어가면 이렇게 뜰겁니다 많이 길어보이는데 걱정할것없습니다 별거아닙니다 필터링하는게 꾀많네요 or and substr등을 필터링하는걸 보니 우회해야겠네요 이건 블라인드 sql 인젝션을 써야합니다 일단 파이썬으로 코드를 짜봅시다 import string import requests my_cookies=dict(PHPSESSID="") #쿠키 값 idLength=0 url="https://los.rubiya.kr/chall/golem_4b5202cfedd8160e73124b5234235ef5.php?pw='||" abc=string.digits + string.ascii_letters print("Start Blind attack") result="" #pw 길이 알아내기 while(1): idLen..

los 문제 2022.08.28

los #10번 skeleton 문제풀이

문제를 보니 if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~"); 필터링한것이 pw에 들어가 있다면 no hack이 뜹니다 그리고 id가 admin이어야 하니 일단 수정해봅시다. 일단 이런 문제 유형들은 and 1=0은 걸림돌이나 마찬가지입니다 이것을 필터링해주려면 %23을 써주어야합니다 %23은 #이고 #은 필터링해줍니다 한번 해보겠습니다 이렇게 해주면 pw는 ''이 들어가고 id에는 admin이 들어간것을 볼수있습니다 이제 무엇을 해야하는가 하면 아까 말했던것 처럼 and 1=0는 걸림돌이기 때문에 필터링 해주어보겠습니다 쉽네요 ^^ 설명하자면 id는 어드민이어야하지만 and 1=0은 걸림돌이기 때문에 #을사용하여 뒤를 날려준겁니다 ..

los 문제 2022.08.28

los 9 #vampire 풀이

문제로 들어가보겠다 문제를 보니 $_GET[id] = strtolower($_GET[id]); $_GET[id] = str_replace("admin","",$_GET[id]); 여기서 어드민을 지우는것을 볼수있다. 한번 해보자 일단 id에 어드민을 써보겠다. php?id=admin을 쳐주었더니 admin이 아니라 id에는 아무것도들어가지 않는것을 볼수있다. 왜냐하면 위에서 봤듯이 admin을 지운다. 그럼 어떻게 해야하냐면 그냥 생각만 조금 해서 쉽게 풀수있었다. admin을 지워버리니까 adadminmin이런식으로 풀리지않을까 생각해보았다. 이렇게 적어주었더니 딱 알맞게 admin이 들어가는것을 볼수있고 vamplre clear!!! 라고 뜨는것을 볼수있을것이다. 정리하자면 admin을 코드에서 지우..

los 문제 2022.08.18

los #7 orge 풀이

일단 해석하자면은 if(preg_match('/or|and/i', $_GET[pw])) exit("HeHe"); or과 and를 필터링 했다. 우회법은 이전 라업에서 말했듯이 or -> || and -> && 이렇게 해주면 된다. 문제풀이 조건을 보자면 if(($result['pw']) && ($result['pw'] == $_GET['pw'])) solve("orge"); pw의 값을 맞춰야한다. 즉, blind sqli를 해줘야한다. 여기서 ~~~는 대충 숫자로 부르트 포싱을 해준다. pw의 길이는 8이다. 이제 substr()을 이용해서 pw의 각 자릿수를 파싱해와서 부르트 포싱을 해준다. 이것은 경우의 수가 많아서 python 코드로 했다. import requests import string u..

los 문제 2022.07.31

LOS 6번 문제 풀이

los 6 문제 풀이 $query = "select id from prob_darkelf where id='guest' and pw='{$_GET[pw]}'"; 쿼리를 보면 id가 게스트로 고정되있고 pw를 전송하는것같습니다. if($result['id'] == 'admin') solve("darkelf"); id가 admin이 되어야 풀리는 문제인거같습니다. 일단 이문제를 어떻게 푸냐면 id가 게스트로 되어있기 때문에 저는 or이 필터링 되있기때문에 ||로 우회 하였습니다. ?pw=1'||id='admin'%23을 써주엇더니 풀리었습니다 %23을쓰는이유는 게스트를 지우기위해서인것같습니다 답 : ?pw=1'||id='admin'%23

los 문제 2021.09.13

LOS 4번 문제 풀이

LOS 4번문제 코드해석 $query = "select id from prob_orc where id='admin' and pw='{$_GET[pw]}'"; pw를 입력받아 prob_orc 테이블에 해당 정보가 있는지 조회한다 그리고 이문제는 id가 어디민으로 고정되있는것을 확인할수있다. $_GET[pw] = addslashes($_GET[pw]); $query = "select pw from prob_orc where id='admin' and pw='{$_GET[pw]}'"; $result = @mysqli_fetch_array(mysqli_query($db,$query)); if(($result['pw']) && ($result['pw'] == $_GET['pw'])) solve("orc"); hi..

los 문제 2021.09.08

LOS 3번 문제 풀이

LOS 3번문제 코드해석 if(preg_match('/\'|\"|\`/i', $_GET[no])) exit("No Quotes ~_~"); 필터링을 보면, prob, _, ., (), ', ", `를 필터링 한다. 즉, 쿼리를 정상적으로 작성할 수 없다. $query = "select id from prob_goblin where id='guest' and no={$_GET[no]}"; 보시면 id는 guest로 고정되있고 no값을 받아오는거로 되있습니다. if($result['id'] == 'admin') solve("goblin"); 그리고 id를 admin으로 만들어주어야합니다 문제 해결 : id라는 변수의 값을 admin으로 설정하고 싶으면, id='admin' 이런식으로 작성해야 하지만, '가 ..

los 문제 2021.09.08

LOS 2번 문제 풀이

LOS 2번문제 코드해석 $query = "select id from prob_cobolt where id='{$_GET[id]}' and pw=md5('{$_GET[pw]}')"; id와 pw를 입력받아 prob_gremlin 테이블에 해당 정보가 있는지 조회한다 하지만 이문제는 pw에 md5(")가 있는것을 확인 할수있습니다 if($result['id'] == 'admin') solve("cobolt"); 이문제는 id에 admin이 되면 풀린다. 해결 :?id=admin'%23 %23이란 #을 인코딩한것인데 이것은 뒤에있는 pw를 없애서 써준것이다. 다시해석해보자면 pw=md5(")이다 그래서 and라서 둘이 같게만들어주어야하기때문에 id는 어드민이 들어가야해서 맞지않는다 그래서 %23(#)을 써서..

los 문제 2021.09.07