[웹프로그래밍과 PHP] 4. 반복문(while,for)

in kr •  5 years ago 

프로그래밍에서 조건문만큼 많이 쓰이는 것이 반복문이다. 반복문을 사용하면, 효과적으로 반복해서 공격을 수행하는 프로그램을 만들 수도 있으며, 불필요한 조건문의 반복 사용을 줄일 수도 있다.

PHP의 반복문으로는 while()문과 for()문이 있다. 두 반복문 모두 임의의 변수에 값을 설정한 후, 값을 증가 혹은 감소시켜 특정 조건이 만족할 때까지 반복하게 하는 구조로 되어 있다. 이를 루프(loop) 구조라고 한다.

루프 구조에는 보통 세 가지 요소가 온다. 첫째는 임의의 변수에 초기값을 할당하는 초기 표현식이다. 일반적으로 초기 표현식에는 $i=1처럼 숫자가 오지만, 여러 가지 방식으로 응용이 가능하다. 둘째는 초기 표현식을 증가시키거나 감소시키면서 반복 count를 셀 수 있게 해주는 증감문이다. 일반적으로 $i++, $i--가 많이 오는데, 이 역시 여러 가지 방식으로 응용할 수 있다. ++는 하나를 증가하라는 뜻이고, --는 하나를 감소시키라는 뜻이다. 윗몸 일으키기를 100번 반복한다고 했을 때, 1부터 100까지 차례대로 숫자를 올리면서 횟수를 세는 방식이 있고, 100부터 1까지 숫자를 내리면서 횟수를 세는 방식이 있다. 올리면서 횟수를 세는 방식이 ++이고, 내리면서 횟수를 세는 방식이 --이다. 마지막으로 루프를 탈출할 조건이 와야 한다. 윗몸 일으키기 100회라는 조건을 걸지 않으면, 반복문은 무한 루프가 된다. 따라서 $i<101이면, 루프 구조를 빠져나가라는 조건 표현식이 와야 한다.

아래는 SQL injection 구문을 출력하기 위한 While문이다.

<?php

$data=1; //초기 표현식

while ($data<=10){ //루프 탈출 조건문

       print "$data' and 1=1--\n";          //SQL injection 구문 출력


       $data++;          //증감문

}

?>

위 반복문을 실행한 결과는 아래와 같다.

while문은 if문과 형식이 비슷하다. while()안에 오는 조건문이 참이면, 반복문을 실행하고, 조건문이 거짓이면, 반복문을 빠져나온다.

위의 while문은 for문으로 변경할 수 있다.

for문의 기본 형식은 아래와 같다.

for(초기 표현식;루프 탈출 조건문;증감문)

따라서 위의 while문을 아래처럼 for문으로 바꿀 수 있다.

<?php

for($data=1;$data<=10;$data++){ //for문

       print "$data' and 1=1--\n";          //SQL injection 구문 출력

}

?>

for문을 실행하면, while문과 같은 결과가 출력된다.

  • 이 내용은 칼리!도커를해킹하다 2부의 아주 일부입니다. 책에서 더 자세히 다룹니다. 2부는 2019년 6월 출간 예정입니다.

  • 칼리!도커를해킹하다 1부는 2부를 공부하기 전에 알아야 할 내용으로 이미 전자책으로 출간되었습니다.

리디북스 https://ridibooks.com/v2/Detail?id=2853000018&fbclid=IwAR3q5hlVZeX20HWAPjWbDnqg8AqYJhx5vWQG2zLxH4xYpS0eWxOdeFLInNE

예스24 http://www.yes24.com/Product/Goods/71536932?scode=032&OzSrank=4

알라딘 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=187404326

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

Congratulations @huti! You received a personal award!

Happy Birthday! - You are on the Steem blockchain for 2 years!

You can view your badges on your Steem Board and compare to others on the Steem Ranking

Do not miss the last post from @steemitboard:

SteemitBoard Ranking update - A better rich list comparator
Vote for @Steemitboard as a witness to get one more award and increased upvotes!