프로그래밍에서 조건문만큼 많이 쓰이는 것이 반복문이다. 반복문을 사용하면, 효과적으로 반복해서 공격을 수행하는 프로그램을 만들 수도 있으며, 불필요한 조건문의 반복 사용을 줄일 수도 있다.
<p dir="auto">PHP의 반복문으로는 while()문과 for()문이 있다. 두 반복문 모두 임의의 변수에 값을 설정한 후, 값을 증가 혹은 감소시켜 특정 조건이 만족할 때까지 반복하게 하는 구조로 되어 있다. 이를 루프(loop) 구조라고 한다. <p dir="auto">루프 구조에는 보통 세 가지 요소가 온다. 첫째는 임의의 변수에 초기값을 할당하는 초기 표현식이다. 일반적으로 초기 표현식에는 $i=1처럼 숫자가 오지만, 여러 가지 방식으로 응용이 가능하다. 둘째는 초기 표현식을 증가시키거나 감소시키면서 반복 count를 셀 수 있게 해주는 증감문이다. 일반적으로 $i++, $i--가 많이 오는데, 이 역시 여러 가지 방식으로 응용할 수 있다. ++는 하나를 증가하라는 뜻이고, --는 하나를 감소시키라는 뜻이다. 윗몸 일으키기를 100번 반복한다고 했을 때, 1부터 100까지 차례대로 숫자를 올리면서 횟수를 세는 방식이 있고, 100부터 1까지 숫자를 내리면서 횟수를 세는 방식이 있다. 올리면서 횟수를 세는 방식이 ++이고, 내리면서 횟수를 세는 방식이 --이다. 마지막으로 루프를 탈출할 조건이 와야 한다. 윗몸 일으키기 100회라는 조건을 걸지 않으면, 반복문은 무한 루프가 된다. 따라서 $i<101이면, 루프 구조를 빠져나가라는 조건 표현식이 와야 한다. <p dir="auto">아래는 SQL injection 구문을 출력하기 위한 While문이다. <?php <p dir="auto">$data=1; //초기 표현식 <p dir="auto">while ($data<=10){ //루프 탈출 조건문 <pre><code> print "$data' and 1=1--\n"; //SQL injection 구문 출력 $data++; //증감문 <p dir="auto">} <p dir="auto">?> <p dir="auto">위 반복문을 실행한 결과는 아래와 같다. <p dir="auto"><img src="https://images.hive.blog/768x0/https://cdn.steemitimages.com/DQmQfPSHR35YqgXSZXxoYsHzXSvvnUNnQL7i5beCSPRStQK/image.png" srcset="https://images.hive.blog/768x0/https://cdn.steemitimages.com/DQmQfPSHR35YqgXSZXxoYsHzXSvvnUNnQL7i5beCSPRStQK/image.png 1x, https://images.hive.blog/1536x0/https://cdn.steemitimages.com/DQmQfPSHR35YqgXSZXxoYsHzXSvvnUNnQL7i5beCSPRStQK/image.png 2x" /> <p dir="auto">while문은 if문과 형식이 비슷하다. while()안에 오는 조건문이 참이면, 반복문을 실행하고, 조건문이 거짓이면, 반복문을 빠져나온다. <p dir="auto">위의 while문은 for문으로 변경할 수 있다. <p dir="auto">for문의 기본 형식은 아래와 같다. <p dir="auto">for(초기 표현식;루프 탈출 조건문;증감문) <p dir="auto">따라서 위의 while문을 아래처럼 for문으로 바꿀 수 있다. <?php <p dir="auto">for($data=1;$data<=10;$data++){ //for문 <pre><code> print "$data' and 1=1--\n"; //SQL injection 구문 출력 <p dir="auto">} <p dir="auto">?> <p dir="auto">for문을 실행하면, while문과 같은 결과가 출력된다. <p dir="auto"><img src="https://images.hive.blog/768x0/https://cdn.steemitimages.com/DQmYuANdsDvvwgpttME8xLmEPEkRrmGr4sMfsB2td8zFRAu/image.png" srcset="https://images.hive.blog/768x0/https://cdn.steemitimages.com/DQmYuANdsDvvwgpttME8xLmEPEkRrmGr4sMfsB2td8zFRAu/image.png 1x, https://images.hive.blog/1536x0/https://cdn.steemitimages.com/DQmYuANdsDvvwgpttME8xLmEPEkRrmGr4sMfsB2td8zFRAu/image.png 2x" /> <ul> <li><p dir="auto">이 내용은 칼리!도커를해킹하다 2부의 아주 일부입니다. 책에서 더 자세히 다룹니다. 2부는 2019년 6월 출간 예정입니다. <li><p dir="auto">칼리!도커를해킹하다 1부는 2부를 공부하기 전에 알아야 할 내용으로 이미 전자책으로 출간되었습니다. <p dir="auto"><span>리디북스 <a href="https://ridibooks.com/v2/Detail?id=2853000018&fbclid=IwAR3q5hlVZeX20HWAPjWbDnqg8AqYJhx5vWQG2zLxH4xYpS0eWxOdeFLInNE" target="_blank" rel="nofollow noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">https://ridibooks.com/v2/Detail?id=2853000018&fbclid=IwAR3q5hlVZeX20HWAPjWbDnqg8AqYJhx5vWQG2zLxH4xYpS0eWxOdeFLInNE <p dir="auto"><span>예스24 <a href="http://www.yes24.com/Product/Goods/71536932?scode=032&OzSrank=4" target="_blank" rel="nofollow noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">http://www.yes24.com/Product/Goods/71536932?scode=032&OzSrank=4 <p dir="auto"><span>알라딘 <a href="https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=187404326" target="_blank" rel="nofollow noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=187404326
Congratulations @huti! You received a personal award!
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:
Vote for @Steemitboard as a witness to get one more award and increased upvotes!