목록전체 글 (542)
선릉역 1번 출구
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cx6vhR/btrcKItPLBN/3EFEPIxKdPdf11oKCaerNK/img.png)
해석하면 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이 출력되는..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/pDiip/btrcMDZ5Fn1/vEFr7kqEFCTYjMEkLQquA1/img.png)
query의 형태가 shit이 from과 prob_giant사이에 들어가 있고 \n, \r, \t이 막혀있는 상태이다. 단순하게 from과 prob_giant의 공백만 넣으면 문제가 풀릴 것 같다. ?shit=%0b or ?shit=% ?shit=%0c를 넣어주면 된다.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/belr40/btrcA1OKwie/Wt1ijuXl4lA35zgT58nWPK/img.png)
여기서 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', '..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cAbpHZ/btrcA3eyR6V/2Y74WxfTRy7g5fZyaML9VK/img.png)
첫 번째 화면이다. 5x5에서 왼쪽이랑 위에 써져있는 숫자만큼 타일을 눌러주면 된다. 크게 어렵지는 않다. solved를 누르니 다음 페이지로 이동했다. 이것저것 값을 대입해봤는데 name의 값만 달라질 뿐 answer나 ip의 값은 바뀌지 않았다. 처음에 작성해준 구문 별 다를게 없어서 이것저것 시도해보았다. 그리고 이렇게 쿼리를 작성하니 풀렸다. 아마도 뒤에 또 다른 인자가 있었던 듯하다. --(공백)대신 #을 써도 가능하다. '||'1=1#도 가능하고.. clear!