To comply with the rule, in this write up, some hints related to this challenge only will be mentioned.
룰을 준수하기 위해, 여기서는 챌린지와과 관련된 몇 가지 힌트만이 언급됩니다.
(5) Let’s try
The following input box receives a serialized object (a string) and it deserialzes it.
(5) 도전.
아래의 input 박스는 직렬화된 객체(문자열)를 수신 후 그것을 역직렬화한다.
rO0ABXQAVklmIHlvdSBkZXNlcmlhbGl6ZSBtZSBkb3duLCBJIHNoYWxsIGJlY29tZSBtb3JlIHBvd2VyZnVsIHRoYW4geW91IGNhbiBwb3NzaWJseSBpbWFnaW5l
Try to change this serialized object in order to delay the page response for exactly 5 seconds.
정확히 5초 후 서버가 응답하게 만들기 위해 위의 직렬화된 객체를 변경하라.
The following input box receives a serialized object (a string) and it deserialzes it.
(5) 도전.
아래의 input 박스는 직렬화된 객체(문자열)를 수신 후 그것을 역직렬화한다.
rO0ABXQAVklmIHlvdSBkZXNlcmlhbGl6ZSBtZSBkb3duLCBJIHNoYWxsIGJlY29tZSBtb3JlIHBvd2VyZnVsIHRoYW4geW91IGNhbiBwb3NzaWJseSBpbWFnaW5l
Try to change this serialized object in order to delay the page response for exactly 5 seconds.
정확히 5초 후 서버가 응답하게 만들기 위해 위의 직렬화된 객체를 변경하라.
ysoserial\src\main\java\ysoserial\payloads\util\Gadgets.java
Instead of calling the method "exec()", I used the way of calling the sleep method that waits for 5 seconds. The system commands entered by the user are ignored, but it is the most obvious way. So, as shown in the picture above, I commented on the existing code and wrote the new code below. One thing to note is that you have to cast "(long)" to the left of the number "5000 (1 millisecond x 5000 = 5 seconds)". The "sleep" method requires a "long" type number of milliseconds as the wait time. And save.
"exec()"라는 메소드를 호출하지 말고, 애초에 5초간 대기하는 메소드를 호출하는 방법을 사용했다. 사용자가 입력한 시스템 명령어는 무시되지만 가장 확실한 방법이다. 그래서 위 그림과 같이 기존의 코드는 주석으로 가리고, 그 아래 새 코드를 입력했다. 주의할 점은 "5000(1/1000초 x 5000 = 5초)"이라는 숫자 좌측에 "(long)"으로 형 변환을 해주어야 한다. "sleep" 메소드는 대기 시간을 long 타입의 밀리 초 숫자만 받기 때문이다. 그리고 저장한다.