본문으로 바로가기

webhacking.kr / Old 3

category Wargame/webhacking.kr 2019. 11. 7. 11:41

처음 화면은 간단한 Nonogram 인데 아래와 같이 맞춰주고 다음으로 넘어간다.

 

 

name을 입력받아 POST로 전달한다. 아무 값이나 쓰고 넘어가면 이름과 Nonogram 정답 배열, IP가 리스트로 출력된다.

한편 name을 전송하는 페이지의 소스를 확인하면, name 외에도 hidden으로 answer 값을 전달한다는 사실을 알아낼 수 있다.

 

1
2
3
4
5
6
7
8
9
10
11
12
<html>
<head>
  <title>Challenge 3</title>
</head>
<body>
  <center>Nonogram</center>
  <p>
  <hr>
 
  <form name=kk method=get action=index.php></form>
  <form method=post action=index.php>
    <input type=hidden name=answer value=1010100000011100101011111>Clear!<br>enter your name for log : <input type=text name=id maxlength=10 size=10><input type=submit value='submit'>
cs

 

이 answer 값을 임의의 값으로 수정하고 name을 쓴 뒤 보내면 기존에 작성했던 클리어 로그가 보이지 않는다. 조작한 answer 값으로 한 번 더 데이터를 보내면 처음에 조작했던 항목이 같이 보인다.

 

따라서 서버에서 DB에 클리어 로그를 저장하고 내부적으로 SELECT * FROM ... WHERE ... AND answer=$_POST['answer'] 같은 구문을 쓴다는 사실을 추측해 볼 수 있다. 이 점에 착안해 간단한 몇 개의 SQL Injection 구문을 시도해 보면 다음의 구문에서 SQL Injection으로 필터링을 통과할 수 있고 문제를 해결할 수 있다.

 

1
asdf' OR '1'='1
cs

 

 

Last Update: 20191107

'Wargame > webhacking.kr' 카테고리의 다른 글

webhacking.kr / Old 6  (0) 2019.11.26
webhacking.kr / Old 5  (0) 2019.11.07
webhacking.kr / Old 4  (0) 2019.11.07
webhacking.kr / Old 2  (0) 2019.10.29
webhacking.kr / Old 1  (0) 2019.10.29