eval(cmd)과 eval($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 코드
공 부 했 어~
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
진정한 이스케이프 시퀀스를 Perl로 보는 REP르 p. pl...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.