2021. 2. 27. 17:47ㆍ정보보안/웹 해킹
일곱번째 문제다.
if you can bypass the strcmp function, you get the flag.
strcmp 함수를 bypass 할 수있따면 flag를 획득할 수 있다고 한다.
Start 버튼을 눌러보자.
입력창과 버튼이 존재하고 하단에 view-source 가 있다.
view-source를 눌러 소스코드를 확인해보면 다음과 같다.
strcmp 함수를 통해 입력받은 패스워드값과 $password 값과 같을경우
flag를 획득할 수 있는것 같다.
하지만 나는 $password의 값을 알 수없고 이를 우회해서 문제를 해결해야 하는데,
if(strcmp()) 구문을 보면 ===(엄격한 비교)가 아닌 ==(느슨한 비교)를 이용하고 있다.
이 때문에 strcmp에서 취약점이 발생하는데
프록시툴인 burpsuite를 이용해 확인하면 다음 그림과 같이$_POST['password'] 는 password=파라미터값으로 나타난다.
하지만 password= 가 아닌 password[]= 로 바꾸어 준다면 배열이 되어 취약점이 발생하게 된다.
정상 → strcmp(STRING, STRING)
비정상 → strcmp(STRING, 배열)
비정상의 경우 반환되는 값은 NULL로
if문에서 NULL==0은 참이 되기 때문에 우회에 성공하게된다.
'정보보안 > 웹 해킹' 카테고리의 다른 글
wargame.kr - 9 (DB is really GOOD) (0) | 2021.02.27 |
---|---|
wargame.kr - 8 (md5 password) (0) | 2021.02.27 |
wargame.kr - 6(fly me to the moon)[추후 수정] (0) | 2021.02.27 |
wargame.kr - 5(WTF_CODE) (0) | 2021.02.27 |
wargame.kr - 4(Login Filtering) [추후 수정] (0) | 2021.02.27 |