eval(cmd)과 eval($cmd)의 차이 와 관계

2480 단어 evalcmd$cmd
이 문 제 는 줄곧 나 를 오랫동안 괴 롭 혔 는데,오늘 마침내 분명하게 해결 되 었 다.
문제 1:eval 의 실행 에 더 블 따옴표 가 필요 합 니까?
먼저 세 가지 명령 을 보십시오.

A:<?php eval(system(dir))?>
B:<?php
	$cmd="system(dir)"; 
	eval($cmd)?>
A 결과:
在这里插入图片描述
B 결과:
在这里插入图片描述
잘못 을 보고 하 다
생각:
같은 명령 입 니 다.왜 이런 차이 가 생 겼 는 지 다른 스승 에 게 물 었 습 니 다.eval 이 변수의 값 을 실행 할 때 이 변수 값 은 닫 아야 합 니 다.즉,완전한 문장 이 어야 하고 분점 으로 끝내 야 합 니 다.이 원리 에 따라 우 리 는 위의 명령 을 고 쳐 보 자.

<?php
	$cmd="system(dir);"; 
	eval($cmd)?>
결과:
在这里插入图片描述
실행 가능 한 것 으로 밝 혀 졌 습 니 다.
뒷 말:
이 점 에 대해 서 는 하나 더 보충 해 야 한다.
내 장 된 함수 가 eval 에서 직접 실 행 될 때 점 수 를 추가 할 필요 가 없습니다.두 명령 을 보면 알 수 있 습 니 다.

eval(system(dir));
eval(system(dir););
在这里插入图片描述
내 장 된 함 수 는 점 수 를 붙 일 필요 가 없다.사실 나 는 점 수 를 붙 일 필요 가 없다 고 생각한다.점 수 를 붙 였 으 면 따옴표 를 붙 여야 하고 따옴표 도 해석 의 뜻 을 가지 고 있 기 때문이다.
명령 실행 중 닫 힌 부분 이해 하기:
코드 보기:

eval(system(dir));
eval(system(dir););
결 과 를 보다.
在这里插入图片描述
여기 서 할 수 있 고 뒤의 문 구 는 해석 에 영향 을 주지 않 습 니 다.

<?php
	eval("system(dir);?>xyusaiqeqcyuqqwdnoqcq");
	?>
在这里插入图片描述
우리 가 있 는 이곳 은 모두 영향 을 주지 않 는 다.왜?
우리 가 간단하게 eval 이라는 명령 을 닫 았 다 면
그럼 우리 플레이 로드 는:

<?php 
	eval("system(dir));?>xyusaiqeqcyuqqwdnoqcq");
?>
            :
<?php 
	eval("system(dir)");?>
	xyusaiqeqcyuqqwdnoqcq");
?>
이전에 나 는 이렇게 닫 힌 줄 알 았 는데 나중에 내 가 틀 렸 다 는 것 을 알 게 되 었 다.한 문제 에서 나 는 이렇게 닫 히 지 않 는 다 는 것 을 알 게 되 었 다.뒤에서 다른 스승 에 게 물 어 보 니 답 을 얻 었 다.
eval()이 함 수 는 eval(문자열)이 안의 문자열 을 새로운 phop 에 넣 고 실행 하 는 것 으로 이해 할 수 있 습 니 다.이 새로운 phop 은 원래dasdas 때?>phop 코드
공 부 했 어~

좋은 웹페이지 즐겨찾기