[php] eval() 함수

2019. 2. 19. 18:22Web 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