워게임/Lord of SQLInjection [Lord of SQLInjection] Nightmare Write UP 작성자 - LRTK 이번 문제는 where절의 pw가 ('')로 감싸져 있다. 또한 id는 admin이 아니라고 박혀있다.solve를 얻기 위해선 쿼리문의 값이 있어야 solve를 얻을 수 있다. 문제를 풀기 앞서 pw에 대한 검사가 있었다. prob, _, ., (), #, -를 필터링 길이가 6 초과를 하면 안됨. 일단 #, --를 사용해서 and id != 'admin'를 주석 처리하는 것은 포기해야할 것 같다.인터넷에 주석 방법을 찾아보니 #, --, /**/, ;%00 4가지 방법이 있었다. 이 중 #, --은 필터링 때문에 불가능하며, /**/은 *사이에 쿼리문이 들어가야 함으로 현 문제에서 사용이 불적합하다.즉, ;%00을 이용하여 and id != 'admin'를 주석 처리해야한다. select id from prob_nightmare where pw=(';%00') and id!='admin'에서 select id from prob_nightmare where pw=('으로 되기 때문에 pw를 True로 만들 방법을 생각해야한다. 일단 ('로 내두면 어떠한 값을 넣어도 쿼리문이 Error를 발생시키기 때문에 ('')으로 만들어줘야한다.그럼 pw=('')임으로 아무 값이 없기 때문에 False로 된다. 이 때문에 ''사이에 값을 넣어서 True로 만들어야한다. 몇가지 SQLI의 사례를 살펴본 결과 pw=('')=0으로 True로 만들어 줄 수 있다는 것을 알 수 있었다.이것은 pw=('')이 False이고, 0은 Fasle이고 이들을 False = False로 비교하면 True로 나오게 된다. 문제를 쉽게 클리어할 수 있었다. 공유하기 게시글 관리 MSS '워게임 > Lord of SQLInjection' 카테고리의 다른 글 [Lord of SQLInjection] Iron Golem Write UP (0) 2021.08.07 [Lord of SQLInjection] Dragon Write UP (0) 2021.08.07 [Lord of SQLInjection] Zombie Assassin Write UP (0) 2021.08.07 [Lord of SQLInjection] Succubus Write UP (0) 2021.07.24 [Lord of SQLInjection] Assassin Write UP (0) 2021.07.24 Contents 당신이 좋아할만한 콘텐츠 [Lord of SQLInjection] Iron Golem Write UP 2021.08.07 [Lord of SQLInjection] Dragon Write UP 2021.08.07 [Lord of SQLInjection] Zombie Assassin Write UP 2021.08.07 [Lord of SQLInjection] Succubus Write UP 2021.07.24 댓글 0 + 이전 댓글 더보기