[20] dragon 문제 풀이 주어진 쿼리문을 보겠다. $query = "select id from prob_dragon where id='guest'# and pw='{$_GET[pw]}'"; 첫번째 조건절 뒤에 #을 넣어서 뒷부분을 날려버리고 있다. 스터디 초반에 로그인 로직 5가지 유형을 개발할 때, 조건절이 개행 처리된 쿼리에...
Total (107)
Lord of SQL Injection › LOS - 19번 xavis
[19] xavis 문제 풀이 오랜만에 만나는 Blind SQLi 문제다. solve 조건은 언제나와 같이 admin 계정의 pw를 알아내는 것이다. preg_match를 보면 regex와 like를 필터링하고 있다. regex는 Sql 정규표현식인 regexp를 걸러내기 위한 것으로 보인다. 정작 =는 필터링 하고 있지 않기 때문에 ...
Lord of SQL Injection › LOS - 18번 nightmare
[18] nightmare 문제 풀이 이번 문제에서는 #과 -를 추가로 필터링해주고 있다. 자주 사용되는 형식의 주석을 필터링하기위한 목적으로 보인다. 또한, strlen을 이용해 pw의 페이로드 길이를 6Byte 이하로 제한하고 있다. 주어진 쿼리문을 보겠다. $query = "select id from prob_nightmare ...
Lord of SQL Injection › LOS - 17번 assassin
[17] assassin 문제 풀이 처음 보는 함수가 나왔다. strrev는 입력받은 문자열을 거꾸로 뒤집어서 반환하는 함수다. strrev(“hello”) ⇒ olleh 이런 식이다. 주의할 점은, Byte 단위로 뒤집기 때문에 2Byte 문자인 한글이 들어가면 깨지게 된다는 점이다. 이번 문제에서는 여러번 접했었던 adds...
Lord of SQL Injection › LOS - 16번 succubus
[16] succubus 문제 풀이 싱글쿼터 우회에는 두 가지 방법이 있다. 첫번째는 그냥 더블쿼터를 쓰는 것이다. 그러나 더블쿼터로는 서버측 쿼리문에 열려있는 싱글쿼터를 닫아줄 수가 없기 때문에 쿼리문을 원하는 방향으로 아예 틀어줄 수는 없다. 두번째는 아주 한정적인 상황에서만 쓸 수 있는 방법이다. 이번 문제처럼 두개 이상의 ...
Lord of SQL Injection › LOS - 15번 assassin
[15] assassin 문제 풀이 또 새로운 유형이다. 싱글쿼터 필터링을 우회할 방법이 딱히 보이지 않는다. 이 경우, 아마도 like절의 특성을 이용하여 admin 레코드를 뽑아오는 문제인 것 같았다. 먼저, like절에 사용되는 패턴에 대해 간단히 표로 정리해보았다. SELEC...
Lord of SQL Injection › LOS - 14번 giant
[14] giant 문제 풀이 이전과는 조금 다른 형태다. 처음 보고는 이게 뭐지 싶었지만… where 1 == TRUE 임을 알고 나니 감이 왔다. from과 prob_giant 사이에 공백을 삽입하여 올바른 쿼리로 만들어주면 풀리는 문제인 것 같다. 다만, preg_match를 살펴보면 공백 및 자주 쓰이는 공백 우회 문자들...
Lord of SQL Injection › LOS - 13번 bugbear
[13] bugbear 문제 풀이 preg_match에 뭐가 좀 많다. 하나하나 살펴본다. 필터링 사항이다. ① 싱글쿼터 ② substr ③ ascii ④ = ⑤ or/and ⑥ 공백 ⑦ like ⑧ 0x 지금까지의 필터링 사항을 몽땅 다 집어넣었다. 추가로 like에 대한 필터링까지 적용되었는데, 이에 대한 ...
Lord of SQL Injection › LOS - 12번 darkknight
[12] darkknight 문제 풀이 필터링 사항은 다음과 같다. ① 싱글쿼터 ② substr ③ ascii ④ = substr/ascii 필터링 우회 방법은 다음과 같다. ① substr ⇒ ord ② ascii ⇒ mid 또한, 이전 문제와 마찬가지로 admin의 pw를 알아야 풀 수 있는 Blind SQLi 문제이...
Lord of SQL Injection › LOS - 11번 golem
[11] golem 문제 풀이 이번 문제에서는 ① or/and ② substr( ③ = 를 필터링하고 있다. 또한 근본적으로는 pw를 알아야 풀 수 있는 Blind SQLi 문제이다. (∵ addslashes) 이전에 써먹었던 자동화 코드에 필터링 우회를 적용해주면 될 것 같다. 먼저, 자동화 코드의 check_length...