Los 5

[5] WOLFMAN 풀이

코드를 보면 preg_match가 하나 더 추가됐는데 추가된 필터링은 공백인 것 같다. 그 외에는 크게 필터링이 되는 것은 없어보인다. 공백을 우회하게끔 해주는 코드로는 개행문자가 있는데 나는 이것을 넣고 해보았다. 생각한 대로 성공했다! 개행문자를 넣지 않고 하는 방법으로는 or과 and연산자와 똑같은 역할을 하는 문자를 넣으면 된다. 정상적으로 잘 작동했다.

Web hacking/LOS 2022.01.29

[4] ORC 풀이

이번 문제는 아예 그냥 query문으로 id가 admin으로 적혀져서 실행되는 것 같다. 그 외의 특이사항으로는 pw가 데이터베이스에 입력되어있는 것과 맞다면 문제가 풀리는 것으로 보여진다. 이것을 인지하지 않고 간단한 sql injection 구문을 넣어봤을 때 아래 사진과 같이 나왔다. 아무래도 확실하게 pw값을 입력해 주어야 하는 것 같다. 나는 먼저 참 거짓을 구분할 수 있도록 어떻게 코드를 짜야하는 지를 생각해봤다. pw라는 변수에 먼저 아무것도 들어가 있지 않는 공백?(''만 넣은거로 인식되도록) 같은 형식에 or 구문을 이용하여 pw의 값이 참이면 Hello admin이라는 문장이 나오지 않을까 라고 생각이 들어 아래 사진처럼 구문을 작성해 보았다. 다행히도 생각했던 것이 잘 작동했다. 작동..

Web hacking/LOS 2022.01.29

[3] GOBLIN 풀이

전에 있던 문제들과는 약간 다른 모습을 보여주는 문제가 나왔다. pw가 아닌 no라는 변수만을 입력받고 있으며 no에는 따옴표를 넣지 못 하도록 preg_match 함수를 써서 필터링을 하고 있는 모습이다. 그런데 id값을 입력받지 않는다기에 나는 처음에는 당황했다. 그럼 어떻게 공격을 하는가.... 그러다가 찾아보니 쿼리문의 특징 중에 한 변수가 한 쿼리에서 중복으로 입력이 이루어진다면 마지막에 입력된 값이 저장된다는 것이었다. 일단 이것을 인지한 상태로 no 변수에 값을 입력해 보았다. no에 1을 입력 했을 때의 모습이다. no 변수에서 1이라는 값은 guest라는 계정의 값과 일치하는 것으로 보여진다. 그 외에 값을 입력해 보았을 때에는 별다른 문구가 뜨지 않았다. 공격을 할 때에는 1외에 다른 ..

Web hacking/LOS 2022.01.23

[2] COBOLT 풀이

1번 문제와 코드가 비슷하지만 중간에 아래와 같은 코드가 추가가 되어있다. $query = "select id from prob_cobolt where id='{$_GET[id]}' and pw=md5('{$_GET[pw]}')"; pw의 값을 그냥 가져오는것이 아니라 md5로 암호화해서 가져오는 것이 추가되어있는 모습이다. 때문에 나는 pw에 간단한 sql injection을 넣어도 암호화되버려 써먹을 수가 없다. 하지만 그 이후에는 딱히 필터링 되는 구간이 없기 때문에 id를 입력할 때 주석문자로 뒷 구문을 주석처리 시킨다면 풀릴 것 이라고 보여져서 #(%23)을 넣고 공격해 보았다. 성공했다!

Web hacking/LOS 2022.01.23

[1] GREMLIN 풀이

먼저 코드부터 확인해 보자. 간단하게 확인해보면 필터링을 거친 후에 id와 pw에 입력값을 확인한 후 로그인을 시켜준다. if(preg_match('/prob|_|\.|\(\)/i', $_GET[id])) exit("No Hack ~_~"); // do not try to attack another table, database! if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~"); preg_match()는 입력된 문자열을 확인한 후, 설정한 옵션 값과 일치하는 패턴이 있는지 확인한다. 위의 코드를 보면 prob이나 일부 특수문자들의 입력을 확인하고 더 이상의 코드 실행을 불가능하게 막는다. 우리는 이 함수를 신경쓰면서 코드 값을 입력하면..

Web hacking/LOS 2022.01.22
반응형