2019. 2. 19. 18:22ㆍWeb Hacking/[Memo] Web Functions
PHP 코드에서 eval( )함수가 나와 간단하게 정리하고자 한다!
eval( )함수는 제일 직관적으로 설명하면!
"eval(여기에 있는 php코드를 실행)"이라고 정의 할 수 있다!
ex) eval("echo 'a' ;")라고 작성을 하면
괄호 안에 있는 문자열(string)을
php에서 실행시킨다고 보면 된다!
즉 <?php
echo 'a'; ?>
과 같다는 이야기이다!
그래서 항상 ;(세미 콜론)을
끝부분에 적어주어야 한다!
근데 실제로는 eval의 이런
코드를 동작시키는 기능 때문에
개발할때 eval함수를 권하지 않는다!
<예를 들어 설명을 하겠다!>
왜냐하면
php변수 fun에 get 방식으로 입력을 받을 때!
$fun=$_GET['fun'];
이 데이터의 내용을 eval 함수의 인자로 주면!
eval($fun)이 된다!
하지만, 사용자가 이 fun에
악의적인 스크립트를 넣으면
해당 코드가 실행되기 때문이다!
어떻게 넣냐면
$fun= mysql_fetch_array(mysql_query("SELECT * FROM users WHERE 1<2;"));
mysql_fetch array 안에 mysql_query
mysql_query안에 쿼리문
쿼리문은 user 테이블에서
조건에 맞는 놈들만 가져와라!
where는 조건인데 1<2는 참이니
user 테이블에서 모든 값을 가져온다
(mysql은 참이면 모든 걸 다 가져온다)
이렇듯 CTF나 다른 소스코드에서
eval( )함수가 나온다면
eval 함수의 인자에 알맞은 입력을 하면
exploit이 가능하다는 것을 유의하자!
'Web Hacking > [Memo] Web Functions' 카테고리의 다른 글
[php] preg_match 함수 (1) | 2019.02.22 |
---|