목록Hacking & Security (134)
선릉역 1번 출구

id랑 pw둘 중 어떤 것을 공략해야할까? 평소같았으면 pw를 공략했겠지만 지금은 따옴표가 막혀있기 때문에 id를 공략하려고한다. study(4)에서 배운 '를 무력화시키는 방법은 \사용이 있었다. 그럼 id에 \를 넣어주자 그럼 id의 값이 '\' and pw'가 되어버린다. 정확히는 \' and pw =이다. 그리고 pw의 인자로 true값을 넣어준 뒤 주석처리를 해서 '를 날려버린다. clear

해석하면 result의 id값이 admin일 때 solve되는데, admin의 pw를 구해야할 것 같다. 먼저 pw like '________'로 query를 했더니 Hello guest가 떴다. 왠지 admin의 password length도 8일 것 같다. 그럼 python을 사용해서 guest와 admin의 password가 다를 때를 출력해보도록 하자. for i in range(33, 127): query = "pw=__{}%".format(chr(i)) r = requests.get(url+query, headers = headers) if "Hello admin" in r.text: print(chr(i)) break 처음에는 {}%로 주었다가 한개씩 _를 앞에 추가해서 admin이 출력되는..

query의 형태가 shit이 from과 prob_giant사이에 들어가 있고 \n, \r, \t이 막혀있는 상태이다. 단순하게 from과 prob_giant의 공백만 넣으면 문제가 풀릴 것 같다. ?shit=%0b or ?shit=% ?shit=%0c를 넣어주면 된다.

여기서 id의 값으로 admin이 필터링되고 있기 때문에 이렇게 값을 넣어주면 admin이 필터링되어 you are not admin이 나오는 걸 확인할 수 있다. 그럼 어떻게 우회해서 id=admin이고 REMOTE_ADDR는 내 ip로 되어있는 query를 db에 insert할 수 있을까? 바로 insert의 취약점을 이용하는 것이다. ex) insert into DB(id,pw) values('admin', '1234'),('guest', '123) -> ('admin', '1234'),('guest', '123) insert문에서 콤마를 사용해서 데이터를 1개 이상 넣을 수 있다. 지금 query문이 "select ip from chall35(id,ip,phone) values('guest', '..

첫 번째 화면이다. 5x5에서 왼쪽이랑 위에 써져있는 숫자만큼 타일을 눌러주면 된다. 크게 어렵지는 않다. solved를 누르니 다음 페이지로 이동했다. 이것저것 값을 대입해봤는데 name의 값만 달라질 뿐 answer나 ip의 값은 바뀌지 않았다. 처음에 작성해준 구문 별 다를게 없어서 이것저것 시도해보았다. 그리고 이렇게 쿼리를 작성하니 풀렸다. 아마도 뒤에 또 다른 인자가 있었던 듯하다. --(공백)대신 #을 써도 가능하다. '||'1=1#도 가능하고.. clear!

여기서 preg_match로 거르는게 if에서 필요한 문자열인 admin인 것을 알 수 있다. 이렇게 문자열 자체를 거를 때 사용할 수 있는 방법으로는 \우회와 like, 대소문자 사용이 있는데 지금 따옴표를 금지하고 있어서 \우회와 대소문자로 이 문제를 풀어보려고한다. 1. \사용하기 ?id=ad\min 2. 대소문자 mysql에서는 Admin = admin인데 php에서는 대소문자를 구분하므로 ?id=Admin clear