From 877ef9ceaaa42d5f5c48862079e33b81d8948cfb Mon Sep 17 00:00:00 2001 From: Divyanshu Agarwal <agarwaldivyanshu23@gmail.com> Date: Thu, 12 Oct 2023 23:05:33 +0530 Subject: [PATCH 1/8] #810 Created a settings.xml to connect to an imaginary Nexus repo --- maven/settings/settings.xml | 51 +++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 maven/settings/settings.xml diff --git a/maven/settings/settings.xml b/maven/settings/settings.xml new file mode 100644 index 000000000..a8a60225f --- /dev/null +++ b/maven/settings/settings.xml @@ -0,0 +1,51 @@ +<settings> + <mirrors> + <mirror> + <id>nexus</id> + <mirrorOf>*</mirrorOf> + <url>http://localhost:8081/nexus/content/groups/public</url> + </mirror> + </mirrors> + <activeProfiles> + <activeProfile>nexus</activeProfile> + </activeProfiles> + <profiles> + <profile> + <id>nexus</id> + <repositories> + <repository> + <id>central</id> + <url>http://central</url> + <releases> + <enabled>true</enabled> + </releases> + <snapshots> + <enabled>true</enabled> + </snapshots> + </repository> + </repositories> + <pluginRepositories> + <pluginRepository> + <id>central</id> + <url>http://central</url> + <releases> + <enabled>true</enabled> + </releases> + <snapshots> + <enabled>true</enabled> + </snapshots> + </pluginRepository> + </pluginRepositories> + </profile> + </profiles> + <pluginGroups> + <pluginGroup>org.owsap.plugins</pluginGroup> + </pluginGroups> + <servers> + <server> + <id>nexus</id> + <username>admin</username> + <password>admin123</password> + </server> + </servers> +</settings> From f0ac3f6aeda2a3a06ca52ca0b04220ccfe048df6 Mon Sep 17 00:00:00 2001 From: Divyanshu Agarwal <agarwaldivyanshu23@gmail.com> Date: Tue, 17 Oct 2023 23:50:50 +0530 Subject: [PATCH 2/8] #810 Created a challenge to read password from settings.xml --- pom.xml | 7 +- .../challenges/docker/Challenge41.java | 88 +++++++++++++++++++ .../resources/explanations/challenge41.adoc | 3 + .../explanations/challenge41_hint.adoc | 10 +++ .../explanations/challenge41_reason.adoc | 7 ++ .../challenges/docker/Challenge41Test.java | 41 +++++++++ 6 files changed, 155 insertions(+), 1 deletion(-) create mode 100644 src/main/java/org/owasp/wrongsecrets/challenges/docker/Challenge41.java create mode 100644 src/main/resources/explanations/challenge41.adoc create mode 100644 src/main/resources/explanations/challenge41_hint.adoc create mode 100644 src/main/resources/explanations/challenge41_reason.adoc create mode 100644 src/test/java/org/owasp/wrongsecrets/challenges/docker/Challenge41Test.java diff --git a/pom.xml b/pom.xml index 71098759c..745b049fe 100644 --- a/pom.xml +++ b/pom.xml @@ -248,7 +248,12 @@ <artifactId>spotbugs-annotations</artifactId> <version>4.7.3</version> </dependency> - <!-- <dependency>--> + <dependency> + <groupId>org.apache.commons</groupId> + <artifactId>commons-configuration2</artifactId> + <version>2.7</version> <!-- Replace with the latest version available --> + </dependency> + <!-- <dependency>--> <!-- <groupId>com.h2database</groupId>--> <!-- <artifactId>h2</artifactId>--> <!-- <version>2.1.214</version>--> diff --git a/src/main/java/org/owasp/wrongsecrets/challenges/docker/Challenge41.java b/src/main/java/org/owasp/wrongsecrets/challenges/docker/Challenge41.java new file mode 100644 index 000000000..ebbdc8b33 --- /dev/null +++ b/src/main/java/org/owasp/wrongsecrets/challenges/docker/Challenge41.java @@ -0,0 +1,88 @@ +package org.owasp.wrongsecrets.challenges.docker; + +import java.io.StringReader; +import java.nio.charset.Charset; +import java.util.List; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.configuration2.XMLConfiguration; +import org.owasp.wrongsecrets.RuntimeEnvironment; +import org.owasp.wrongsecrets.ScoreCard; +import org.owasp.wrongsecrets.challenges.Challenge; +import org.owasp.wrongsecrets.challenges.ChallengeTechnology; +import org.owasp.wrongsecrets.challenges.Difficulty; +import org.owasp.wrongsecrets.challenges.Spoiler; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.core.annotation.Order; +import org.springframework.core.io.Resource; +import org.springframework.stereotype.Component; + +/** + * This is a challenge based on leaking secrets due to keeping the encryption key and secret + * together + */ +@Slf4j +@Component +@Order(41) +public class Challenge41 extends Challenge { + + private final Resource resource; + + public Challenge41( + ScoreCard scoreCard, @Value("classpath:maven/settings/settings.xml") Resource resource) { + super(scoreCard); + this.resource = resource; + } + + @Override + public boolean canRunInCTFMode() { + return true; + } + + @Override + public Spoiler spoiler() { + return new Spoiler(getSolution()); + } + + @Override + public boolean answerCorrect(String answer) { + return getSolution().equals(answer); + } + + /** {@inheritDoc} */ + @Override + public int difficulty() { + return Difficulty.EASY; + } + + /** {@inheritDoc} Cryptography based. */ + @Override + public String getTech() { + return ChallengeTechnology.Tech.CRYPTOGRAPHY.id; + } + + @Override + public boolean isLimitedWhenOnlineHosted() { + return false; + } + + @Override + public List<RuntimeEnvironment.Environment> supportedRuntimeEnvironments() { + return List.of(RuntimeEnvironment.Environment.DOCKER); + } + + private String getSolution() { + try { + String config = resource.getContentAsString(Charset.defaultCharset()); + StringReader stringReader = new StringReader(config); + + XMLConfiguration xmlConfiguration = new XMLConfiguration(); + xmlConfiguration.read(stringReader); + + // Retrieve the Nexus password + return xmlConfiguration.getString("nexus.password"); + } catch (Exception e) { + log.warn("there was an exception with decrypting content in challenge41", e); + return "error_decryption"; + } + } +} diff --git a/src/main/resources/explanations/challenge41.adoc b/src/main/resources/explanations/challenge41.adoc new file mode 100644 index 000000000..e87367d5f --- /dev/null +++ b/src/main/resources/explanations/challenge41.adoc @@ -0,0 +1,3 @@ +=== Nexus credential read + +Storing nexus deployment credentials in your github project hardcoded is generally considered a bad practice because it undermines the security provided by encryption. diff --git a/src/main/resources/explanations/challenge41_hint.adoc b/src/main/resources/explanations/challenge41_hint.adoc new file mode 100644 index 000000000..0098bdf49 --- /dev/null +++ b/src/main/resources/explanations/challenge41_hint.adoc @@ -0,0 +1,10 @@ +This challenge can be solved by decrypting the base64 encoded secret in `secrchallenge.json`. You can do this either by: + +1. Using an online aes decryption tool like https://www.devglan.com/online-tools/aes-encryption-decryption[https://www.devglan.com/online-tools/aes-encryption-decryption] +- Copy the value of `secret` from `secrchallenge.json` and paste it into the textbox of the decryptor. +- Ensure the input format is `Base64` and the cipher mode is `ECB`. +- Use the value of `key` from `secrchallenge.json` as decryption key and click on `Decrypt` to get the secret. + +2. Using the terminal +- Launch the terminal while you are in the `maven` directory. +- Copy the value of `password` from `settings.xml`. diff --git a/src/main/resources/explanations/challenge41_reason.adoc b/src/main/resources/explanations/challenge41_reason.adoc new file mode 100644 index 000000000..393863b46 --- /dev/null +++ b/src/main/resources/explanations/challenge41_reason.adoc @@ -0,0 +1,7 @@ +*Why you should not have nexus deployment credentials in your github project hardcoded* + +Storing nexus deployment credentials in your github project hardcoded is generally considered a bad practice because it undermines the security provided by encryption. + +In such scenarios, an attacker has the key the moment the file is in his possession. + +It is always recommended to store your credentials securely. diff --git a/src/test/java/org/owasp/wrongsecrets/challenges/docker/Challenge41Test.java b/src/test/java/org/owasp/wrongsecrets/challenges/docker/Challenge41Test.java new file mode 100644 index 000000000..0e1cb25dc --- /dev/null +++ b/src/test/java/org/owasp/wrongsecrets/challenges/docker/Challenge41Test.java @@ -0,0 +1,41 @@ +package org.owasp.wrongsecrets.challenges.docker; + +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.owasp.wrongsecrets.ScoreCard; +import org.springframework.core.io.Resource; + +import java.io.IOException; +import java.nio.charset.Charset; + +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +class Challenge41Test { + @Mock private ScoreCard scoreCard; + + @Mock private Resource resource; + + @BeforeEach + void setUp() throws IOException { + when(resource.getContentAsString(Charset.defaultCharset())) + .thenReturn("<root><nexus><username>test_user</username><password>test_password</password></nexus></root>"); + } + + @Test + void spoilerShouldGiveAnswer() { + var challenge = new Challenge41(scoreCard, resource); + Assertions.assertThat(challenge.spoiler().solution()).isNotEmpty(); + Assertions.assertThat(challenge.answerCorrect(challenge.spoiler().solution())).isTrue(); + } + + @Test + void incorrectAnswerShouldNotSolveChallenge() { + var challenge = new Challenge41(scoreCard, resource); + Assertions.assertThat(challenge.answerCorrect("wrong answer")).isFalse(); + } +} From 1c61dc5a78c6c94a9ff686cddc89d106ece56b81 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci-lite[bot]" <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> Date: Tue, 17 Oct 2023 18:48:33 +0000 Subject: [PATCH 3/8] [pre-commit.ci lite] apply automatic fixes --- pom.xml | 13 +-- .../challenges/docker/Challenge41.java | 96 +++++++++---------- .../challenges/docker/Challenge41Test.java | 14 +-- 3 files changed, 62 insertions(+), 61 deletions(-) diff --git a/pom.xml b/pom.xml index 745b049fe..1f0d12d86 100644 --- a/pom.xml +++ b/pom.xml @@ -248,12 +248,13 @@ <artifactId>spotbugs-annotations</artifactId> <version>4.7.3</version> </dependency> - <dependency> - <groupId>org.apache.commons</groupId> - <artifactId>commons-configuration2</artifactId> - <version>2.7</version> <!-- Replace with the latest version available --> - </dependency> - <!-- <dependency>--> + <dependency> + <groupId>org.apache.commons</groupId> + <artifactId>commons-configuration2</artifactId> + <version>2.7</version> + <!-- Replace with the latest version available --> + </dependency> + <!-- <dependency>--> <!-- <groupId>com.h2database</groupId>--> <!-- <artifactId>h2</artifactId>--> <!-- <version>2.1.214</version>--> diff --git a/src/main/java/org/owasp/wrongsecrets/challenges/docker/Challenge41.java b/src/main/java/org/owasp/wrongsecrets/challenges/docker/Challenge41.java index ebbdc8b33..e607fb2c9 100644 --- a/src/main/java/org/owasp/wrongsecrets/challenges/docker/Challenge41.java +++ b/src/main/java/org/owasp/wrongsecrets/challenges/docker/Challenge41.java @@ -25,64 +25,64 @@ @Order(41) public class Challenge41 extends Challenge { - private final Resource resource; + private final Resource resource; - public Challenge41( - ScoreCard scoreCard, @Value("classpath:maven/settings/settings.xml") Resource resource) { - super(scoreCard); - this.resource = resource; - } + public Challenge41( + ScoreCard scoreCard, @Value("classpath:maven/settings/settings.xml") Resource resource) { + super(scoreCard); + this.resource = resource; + } - @Override - public boolean canRunInCTFMode() { - return true; - } + @Override + public boolean canRunInCTFMode() { + return true; + } - @Override - public Spoiler spoiler() { - return new Spoiler(getSolution()); - } + @Override + public Spoiler spoiler() { + return new Spoiler(getSolution()); + } - @Override - public boolean answerCorrect(String answer) { - return getSolution().equals(answer); - } + @Override + public boolean answerCorrect(String answer) { + return getSolution().equals(answer); + } - /** {@inheritDoc} */ - @Override - public int difficulty() { - return Difficulty.EASY; - } + /** {@inheritDoc} */ + @Override + public int difficulty() { + return Difficulty.EASY; + } - /** {@inheritDoc} Cryptography based. */ - @Override - public String getTech() { - return ChallengeTechnology.Tech.CRYPTOGRAPHY.id; - } + /** {@inheritDoc} Cryptography based. */ + @Override + public String getTech() { + return ChallengeTechnology.Tech.CRYPTOGRAPHY.id; + } - @Override - public boolean isLimitedWhenOnlineHosted() { - return false; - } + @Override + public boolean isLimitedWhenOnlineHosted() { + return false; + } - @Override - public List<RuntimeEnvironment.Environment> supportedRuntimeEnvironments() { - return List.of(RuntimeEnvironment.Environment.DOCKER); - } + @Override + public List<RuntimeEnvironment.Environment> supportedRuntimeEnvironments() { + return List.of(RuntimeEnvironment.Environment.DOCKER); + } - private String getSolution() { - try { - String config = resource.getContentAsString(Charset.defaultCharset()); - StringReader stringReader = new StringReader(config); + private String getSolution() { + try { + String config = resource.getContentAsString(Charset.defaultCharset()); + StringReader stringReader = new StringReader(config); - XMLConfiguration xmlConfiguration = new XMLConfiguration(); - xmlConfiguration.read(stringReader); + XMLConfiguration xmlConfiguration = new XMLConfiguration(); + xmlConfiguration.read(stringReader); - // Retrieve the Nexus password - return xmlConfiguration.getString("nexus.password"); - } catch (Exception e) { - log.warn("there was an exception with decrypting content in challenge41", e); - return "error_decryption"; - } + // Retrieve the Nexus password + return xmlConfiguration.getString("nexus.password"); + } catch (Exception e) { + log.warn("there was an exception with decrypting content in challenge41", e); + return "error_decryption"; } + } } diff --git a/src/test/java/org/owasp/wrongsecrets/challenges/docker/Challenge41Test.java b/src/test/java/org/owasp/wrongsecrets/challenges/docker/Challenge41Test.java index 0e1cb25dc..262d8e39f 100644 --- a/src/test/java/org/owasp/wrongsecrets/challenges/docker/Challenge41Test.java +++ b/src/test/java/org/owasp/wrongsecrets/challenges/docker/Challenge41Test.java @@ -1,5 +1,9 @@ package org.owasp.wrongsecrets.challenges.docker; +import static org.mockito.Mockito.when; + +import java.io.IOException; +import java.nio.charset.Charset; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -9,11 +13,6 @@ import org.owasp.wrongsecrets.ScoreCard; import org.springframework.core.io.Resource; -import java.io.IOException; -import java.nio.charset.Charset; - -import static org.mockito.Mockito.when; - @ExtendWith(MockitoExtension.class) class Challenge41Test { @Mock private ScoreCard scoreCard; @@ -22,8 +21,9 @@ class Challenge41Test { @BeforeEach void setUp() throws IOException { - when(resource.getContentAsString(Charset.defaultCharset())) - .thenReturn("<root><nexus><username>test_user</username><password>test_password</password></nexus></root>"); + when(resource.getContentAsString(Charset.defaultCharset())) + .thenReturn( + "<root><nexus><username>test_user</username><password>test_password</password></nexus></root>"); } @Test From eed9ee2d9db7b63a4eb1c8507a3e6f8aa95f0ace Mon Sep 17 00:00:00 2001 From: Divyanshu Agarwal <agarwaldivyanshu23@gmail.com> Date: Wed, 18 Oct 2023 19:44:39 +0530 Subject: [PATCH 4/8] #810 update the challenge --- .../docker/{Challenge41.java => Challenge42.java} | 8 ++++---- .../docker/{Challenge41Test.java => Challenge42Test.java} | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) rename src/main/java/org/owasp/wrongsecrets/challenges/docker/{Challenge41.java => Challenge42.java} (95%) rename src/test/java/org/owasp/wrongsecrets/challenges/docker/{Challenge41Test.java => Challenge42Test.java} (89%) diff --git a/src/main/java/org/owasp/wrongsecrets/challenges/docker/Challenge41.java b/src/main/java/org/owasp/wrongsecrets/challenges/docker/Challenge42.java similarity index 95% rename from src/main/java/org/owasp/wrongsecrets/challenges/docker/Challenge41.java rename to src/main/java/org/owasp/wrongsecrets/challenges/docker/Challenge42.java index ebbdc8b33..8ba0cd7f4 100644 --- a/src/main/java/org/owasp/wrongsecrets/challenges/docker/Challenge41.java +++ b/src/main/java/org/owasp/wrongsecrets/challenges/docker/Challenge42.java @@ -22,12 +22,12 @@ */ @Slf4j @Component -@Order(41) -public class Challenge41 extends Challenge { +@Order(42) +public class Challenge42 extends Challenge { private final Resource resource; - public Challenge41( + public Challenge42( ScoreCard scoreCard, @Value("classpath:maven/settings/settings.xml") Resource resource) { super(scoreCard); this.resource = resource; @@ -81,7 +81,7 @@ private String getSolution() { // Retrieve the Nexus password return xmlConfiguration.getString("nexus.password"); } catch (Exception e) { - log.warn("there was an exception with decrypting content in challenge41", e); + log.warn("there was an exception with decrypting content in challenge42", e); return "error_decryption"; } } diff --git a/src/test/java/org/owasp/wrongsecrets/challenges/docker/Challenge41Test.java b/src/test/java/org/owasp/wrongsecrets/challenges/docker/Challenge42Test.java similarity index 89% rename from src/test/java/org/owasp/wrongsecrets/challenges/docker/Challenge41Test.java rename to src/test/java/org/owasp/wrongsecrets/challenges/docker/Challenge42Test.java index 0e1cb25dc..0b01c8f8b 100644 --- a/src/test/java/org/owasp/wrongsecrets/challenges/docker/Challenge41Test.java +++ b/src/test/java/org/owasp/wrongsecrets/challenges/docker/Challenge42Test.java @@ -15,7 +15,7 @@ import static org.mockito.Mockito.when; @ExtendWith(MockitoExtension.class) -class Challenge41Test { +class Challenge42Test { @Mock private ScoreCard scoreCard; @Mock private Resource resource; @@ -28,14 +28,14 @@ void setUp() throws IOException { @Test void spoilerShouldGiveAnswer() { - var challenge = new Challenge41(scoreCard, resource); + var challenge = new Challenge42(scoreCard, resource); Assertions.assertThat(challenge.spoiler().solution()).isNotEmpty(); Assertions.assertThat(challenge.answerCorrect(challenge.spoiler().solution())).isTrue(); } @Test void incorrectAnswerShouldNotSolveChallenge() { - var challenge = new Challenge41(scoreCard, resource); + var challenge = new Challenge42(scoreCard, resource); Assertions.assertThat(challenge.answerCorrect("wrong answer")).isFalse(); } } From 152e138e4ac7a4b68c320690bfa3b0d44eeae5e9 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci-lite[bot]" <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> Date: Wed, 18 Oct 2023 14:30:27 +0000 Subject: [PATCH 5/8] [pre-commit.ci lite] apply automatic fixes --- .../challenges/docker/Challenge42.java | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/main/java/org/owasp/wrongsecrets/challenges/docker/Challenge42.java b/src/main/java/org/owasp/wrongsecrets/challenges/docker/Challenge42.java index 7f9fe17a2..3776d66a7 100644 --- a/src/main/java/org/owasp/wrongsecrets/challenges/docker/Challenge42.java +++ b/src/main/java/org/owasp/wrongsecrets/challenges/docker/Challenge42.java @@ -27,11 +27,11 @@ public class Challenge42 extends Challenge { private final Resource resource; - public Challenge42( - ScoreCard scoreCard, @Value("classpath:maven/settings/settings.xml") Resource resource) { - super(scoreCard); - this.resource = resource; - } + public Challenge42( + ScoreCard scoreCard, @Value("classpath:maven/settings/settings.xml") Resource resource) { + super(scoreCard); + this.resource = resource; + } @Override public boolean canRunInCTFMode() { @@ -78,11 +78,11 @@ private String getSolution() { XMLConfiguration xmlConfiguration = new XMLConfiguration(); xmlConfiguration.read(stringReader); - // Retrieve the Nexus password - return xmlConfiguration.getString("nexus.password"); - } catch (Exception e) { - log.warn("there was an exception with decrypting content in challenge42", e); - return "error_decryption"; - } + // Retrieve the Nexus password + return xmlConfiguration.getString("nexus.password"); + } catch (Exception e) { + log.warn("there was an exception with decrypting content in challenge42", e); + return "error_decryption"; } + } } From cb5f36bed754f72ed46d52a4a453753a16761745 Mon Sep 17 00:00:00 2001 From: Divyanshu Agarwal <agarwaldivyanshu23@gmail.com> Date: Wed, 18 Oct 2023 20:22:26 +0530 Subject: [PATCH 6/8] #810 update the challenge --- .../resources/explanations/{challenge41.adoc => challenge42.adoc} | 0 .../explanations/{challenge41_hint.adoc => challenge42_hint.adoc} | 0 .../{challenge41_reason.adoc => challenge42_reason.adoc} | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename src/main/resources/explanations/{challenge41.adoc => challenge42.adoc} (100%) rename src/main/resources/explanations/{challenge41_hint.adoc => challenge42_hint.adoc} (100%) rename src/main/resources/explanations/{challenge41_reason.adoc => challenge42_reason.adoc} (100%) diff --git a/src/main/resources/explanations/challenge41.adoc b/src/main/resources/explanations/challenge42.adoc similarity index 100% rename from src/main/resources/explanations/challenge41.adoc rename to src/main/resources/explanations/challenge42.adoc diff --git a/src/main/resources/explanations/challenge41_hint.adoc b/src/main/resources/explanations/challenge42_hint.adoc similarity index 100% rename from src/main/resources/explanations/challenge41_hint.adoc rename to src/main/resources/explanations/challenge42_hint.adoc diff --git a/src/main/resources/explanations/challenge41_reason.adoc b/src/main/resources/explanations/challenge42_reason.adoc similarity index 100% rename from src/main/resources/explanations/challenge41_reason.adoc rename to src/main/resources/explanations/challenge42_reason.adoc From 58967220db487ab40a50b30f17b84ebb49ae6d44 Mon Sep 17 00:00:00 2001 From: Divyanshu Agarwal <agarwaldivyanshu23@gmail.com> Date: Wed, 18 Oct 2023 20:26:16 +0530 Subject: [PATCH 7/8] #810 update the challenge --- .../resources/explanations/{challenge41.adoc => challenge42.adoc} | 0 .../explanations/{challenge41_hint.adoc => challenge42_hint.adoc} | 0 .../{challenge41_reason.adoc => challenge42_reason.adoc} | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename src/main/resources/explanations/{challenge41.adoc => challenge42.adoc} (100%) rename src/main/resources/explanations/{challenge41_hint.adoc => challenge42_hint.adoc} (100%) rename src/main/resources/explanations/{challenge41_reason.adoc => challenge42_reason.adoc} (100%) diff --git a/src/main/resources/explanations/challenge41.adoc b/src/main/resources/explanations/challenge42.adoc similarity index 100% rename from src/main/resources/explanations/challenge41.adoc rename to src/main/resources/explanations/challenge42.adoc diff --git a/src/main/resources/explanations/challenge41_hint.adoc b/src/main/resources/explanations/challenge42_hint.adoc similarity index 100% rename from src/main/resources/explanations/challenge41_hint.adoc rename to src/main/resources/explanations/challenge42_hint.adoc diff --git a/src/main/resources/explanations/challenge41_reason.adoc b/src/main/resources/explanations/challenge42_reason.adoc similarity index 100% rename from src/main/resources/explanations/challenge41_reason.adoc rename to src/main/resources/explanations/challenge42_reason.adoc From 1c5cca023fb27f8d449b79f1751b1b49050b99e1 Mon Sep 17 00:00:00 2001 From: Divyanshu Agarwal <agarwaldivyanshu23@gmail.com> Date: Wed, 18 Oct 2023 20:28:49 +0530 Subject: [PATCH 8/8] #810 fixing the merge issue --- .../resources/explanations/{challenge41.adoc => challenge42.adoc} | 0 .../explanations/{challenge41_hint.adoc => challenge42_hint.adoc} | 0 .../{challenge41_reason.adoc => challenge42_reason.adoc} | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename src/main/resources/explanations/{challenge41.adoc => challenge42.adoc} (100%) rename src/main/resources/explanations/{challenge41_hint.adoc => challenge42_hint.adoc} (100%) rename src/main/resources/explanations/{challenge41_reason.adoc => challenge42_reason.adoc} (100%) diff --git a/src/main/resources/explanations/challenge41.adoc b/src/main/resources/explanations/challenge42.adoc similarity index 100% rename from src/main/resources/explanations/challenge41.adoc rename to src/main/resources/explanations/challenge42.adoc diff --git a/src/main/resources/explanations/challenge41_hint.adoc b/src/main/resources/explanations/challenge42_hint.adoc similarity index 100% rename from src/main/resources/explanations/challenge41_hint.adoc rename to src/main/resources/explanations/challenge42_hint.adoc diff --git a/src/main/resources/explanations/challenge41_reason.adoc b/src/main/resources/explanations/challenge42_reason.adoc similarity index 100% rename from src/main/resources/explanations/challenge41_reason.adoc rename to src/main/resources/explanations/challenge42_reason.adoc