STUDY/Hacking Factory
[WEB] 해커팩토리 초급
CH@3M
2020. 6. 5. 17:02
해커팩토리 (https://hackerfactory.co.kr/)
초급
Problem-1. Burpsuite를 이용해 UserPoint 값을 구매금액 이상으로 변조해 주면된다.
Problem-2. CostDC 값을 OriginalCost값과 같게하여 TotalCost를 0으로 조작하면된다.
Problem-3. TotalCost 값을 암호화? 인코딩? 시킨것 같아보였으나, 역시 0으로 바꿔주니 구매에 성공하였다.
Problem-4. Filedownload 취약점 문제이다. Get으로 통신하며
Problem-5. Response 변조
function FileDownload(FileName) {
FileName = FileName + "," + DownloadAccessPerm
FileName = Base64.encode(FileName);
var DownloadActionMethod = "POST";
var DownloadActionPage = "HackDownAct.php";
if ( DownloadAccessPerm == "N") {
alert("파일 다운로드 권한이 없는 사용자 입니다.");
}
document.frm.action = DownloadActionPage;
document.frm.method = DownloadActionMethod;
document.frm.FileName.value = FileName;
document.frm.submit();
}
function DenyAlert() {
alert("파일 다운로드 권한이 없는 사용자 입니다.");
}
<form name="frm" action="" method="">
<input type="hidden" name="FileName" value="">
</form>
<a href="javascript:FileDownload('.../...//.../...//temp/hacktory.txt')">File Download</a>
Problem-6. Burpsuite로 idx 수정하여 접근
Problem-7. 복호화 코드 짜야함 ㅠ
# -*- encoding: cp949 -*-
EncryptReadKey = "iRAJHaTRiRAJHaLLFBOwrXoLF6j2rSXC"
_keyStr = "DUYZabcVWdQefGghijklmAnEFopqrHstKLuvXwRSxyz0IO12M34JN5B6789+PT/=C"
output = ""
index = 0
while index < len(EncryptReadKey):
if index == 28:
for chr1 in range(33,126):
for chr2 in range(33,126):
enc1 = _keyStr[chr1 >> 2]
enc2 = _keyStr[((chr1 & 3) << 4) | (chr2 >> 4)]
enc3 = _keyStr[(chr2 & 15) << 2]
enc4 = _keyStr[64]
if EncryptReadKey[index] == enc1 and EncryptReadKey[index+1] == enc2 and EncryptReadKey[index+2] == enc3 and EncryptReadKey[index+3] == enc4:
output += chr(chr1) + chr(chr2)
index += 4
print(output)
else:
for chr1 in range(33,126):
for chr2 in range(33,126):
for chr3 in range(33,126):
enc1 = _keyStr[chr1 >> 2]
enc2 = _keyStr[((chr1 & 3) << 4) | (chr2 >> 4)]
enc3 = _keyStr[((chr2 & 15) << 2) | (chr3 >> 6)]
enc4 = _keyStr[chr3 & 63]
if EncryptReadKey[index] == enc1 and EncryptReadKey[index+1] == enc2 and EncryptReadKey[index+2] == enc3 and EncryptReadKey[index+3] == enc4:
output += chr(chr1) + chr(chr2) + chr(chr3)
index += 4
print(output)
print("\nFinal result : %s" % output)
Problem-8. admin으로 바꾸고 개발자모드나 코드를 보면 비밀번호가 평문으로 노출되어있음. 그걸로 다시 로그인하면 성공
Problem-10. 주석을 보면 인가계정의 범위가 있음. MyPage 로 가면 sid 값이 나오는데, 이걸 BurpSuite의 Intruder 기능으로 찾아낼 수 있다.
반응형