안녕하세요.
열심히 공부 하고 있는 사람입니다.
다름이 아니라 "PHPreg" 문제의 오류가 있는 것으로 판단되어 이렇게 글을 작성합니다.
제가 아직 잘 몰라 잘못된 판단을 한 것인지 아니면 문제의 오류가 있는 것인지 객관적인 판단 부탁드립니다!
https://regexr.com/ 라는 정규표현식 사이트를 이용하여 step1 문제를 풀고 있었습니다.
$name = dnynyangang0310 / $pw = @9231"!+1+13 로 하니 step1 이 통과 되었습니다.
preg_replace 로 dnynyangang0310 -> dnyang0310 / @9231"!+1+13 -> d4y0r50ng+1+13로
잘 되는것도 확인하였습니다.
그러나 step2 에서 cat ../dream/fl* etc.. 별에 별걸 다 해봤는데도 계속 "Wrong nickname or pw"
라는 메시지만 뜰 뿐 별 다른 소득이 없었습니다.
5시간동안 포기 안하고 풀다가 결국 코인을쓰고 풀이를 보았습니다.
그러다 하는 방식이 다를바가 없었으나 왜 안되나 연구를 하는 도중 정규표현식이 달라 step2에서 안풀린거였습니다.
여기서 이상한게 왜 @9231"!+1+13 << 이 정규표현식으로 step1도 풀렸으며 RegExr에서도 잘 대체되었는데
step2에서 cat 명령어를쓰면 그제서야 "Wrong nickname or pw" 라는 문구가 뜨는지 도저히 이해를 안되는 상황입니다.
제가 빠트린 것이 있다면 도움을 주시면 낮은자세에서 배우겠습니다.
혹시나 시간 되시면 제가 적은 id 및 pw로 테스트 한번 해주시면 감사하겠습니다.
긴글 읽어주셔서 감사합니다.
안녕하세요 T0pCcr4t님!
해당 페이로드 확인결과 $input_pw
에서 사용하신 특수문자 "
로 인해서 step2에서 문제가 발생합니다.
hidden 타입으로 다시 사용자의 입력값을 보내는 과정에서 $input_pw
와 html요소를 이어 붙이는데 input 태그의 value의 값이 "
를 만나 @9231
까지만 value로 설정되는 부분을 확인하였습니다.
value = "@9231"!+1+13" // (!+1+13은 무시됩니다)
value = "@9231.!+1+13" // 정상동작
해당 문제점은 의도치 않게 풀이에 영향을 미치기 때문에 "를 정규식에서 필터링하는 방향으로 수정하겠습니다. 감사합니다!