Challenge 22
22번 문제입니다.
힌트를 보겠습니다.
로그인에 성공하면 해당 아이디와 패스워드를 출력해줍니다.
만약에 admin의 아이디로 로그인에 성공하였다면 Flag를 얻을 수 있습니다.
Login버튼과 Join버튼이 있습니다.
우선 로그인을 위해 Join을 해야할 것 같습니다.
Join버튼을 누루고 username, password를 입력합니다.
username : a
password : a
확인을 위해 a/a로 join하였습니다.
메인화면으로 돌아와 a/a로 로그인합니다.
아이디와 패스워드가 출력되는데 패스워드는 md5로 암호화되어 출력되고 있습니다.
인터넷에서 md5 복호화 사이트를 검색하여 패스워드를 복호화합니다.
884b12461277f5c29baa1ab2479dacd8 MD5 : azombie |
azombie라는 결과 값이 나옵니다. 분명 a로 입력을 했는데 azombie로 복호화 됩니다.
즉, join시 우리가 입력한 패스워드에 zombie를 붙여서 md5로 암호화하여 저장하는 것 같습니다.
admin 또한 ?????zombie로 인코딩되어 있을꺼 같습니다.
데이터베이스에 저장되어 있는 admin의 pw컬럼의 레코드를 알아야하는데
Blind SQL Injection을 이용해야합니다.
SQL쿼리의 조건이 참일 경우입니다.
쿼리의 조건이 거짓일 경우입니다.
위와 같이 pw의 길이를 가져와 비교하여 조건절을 참과 거짓으로 만들어 Blind SQLi 를 시도합니다.
여러차례 시도 후 pw의 길이가 32라는 것을 알 수 있다.
이를 이용하여 ascii()와 substr()을 이용하여 pw의 한글자 씩 비교하여 값을 가져올 수 있다.
이렇게 가져온 md5 암호화된 레코드를 복호화 시키면 admin의 패스워드를 알 수 있다.
???????zombie라는 값으로 복호화 되었다.
복호화된 ??????로 로그인하게되면 문제를 클리어할 수 있다.
'Wargame | CTF > Webhacking.kr' 카테고리의 다른 글
[Webhacking.kr] Challenge 24 (0) | 2016.11.26 |
---|---|
[Webhacking.kr] Challenge 23 (0) | 2016.11.25 |
[Webhacking.kr] Challenge 21 (0) | 2016.11.15 |
[Webhacking.kr] Challenge 20 (0) | 2016.11.15 |
[Webhacking.kr] Challenge 19 [에러] (0) | 2016.11.15 |