본문 바로가기

hacking sorcerer

(372)
리버싱은 매우 재미있다 3890145726 이 숫자가 뜻하는 바는 무엇인가? -> 숫자가 랜덤처럼 보여서 몰랐는데 3890145726은 자세히 보면 1~9까지의 숫자가 전부 있다 1234567890 각각의 입력값을 받아서 숫자로 변환시켜 주는 것을 의미한다 이는 역으로 말해서 원하는 input값을 넣기 위해서 변환된 알파벳 값을 input해야한다는 것을 의미한다 전체적인 큰 그림을 그려보았을 때 핵심은 매우 간단하다 한 가지 입력값을 받은 후에 sub_1400011E0 함수를 통해서 값을 검증한 다음 correct / wrong 을 출력하는 것이다 dwsqawdu는 입력값 뒤에 더하는 값이라는 건 알 수 있었다 input d w s q a w d u x * 2 - 1 + 2 * 7 즉 이 프로그램은 알파벳과 숫자를 서로 변환시..
드림핵 basic explorer 01 포너블에서의 서버는 netcat이라는 프로그램을 사용하여 접속합니다. 이러한 서버에 접속하기 위해서는 bash창이나 terminal창에서 nc라는 명령어를 통해 접속해야 합니다. 예시로, host : host1.dreamhack.games port : 8888 일 경우에는 리눅스에서 “nc host1.dreamhack.games 8888” 이런식으로 접속하면 됩니다. ​ ​ from pwn import* ​ p = remote("host1.dreamhack.games", 12830) ​ read_flag_address = 0x80485B9 ​ payload = 헤으응 ​ payload += 헤헤(read_flag_address) ​ p.sendline(payload) ​ p.interactive()
드림핵 ssti 핵심 웹 어플리케이션에서 동적인 내용을 HTML로 출력할 때 미리 정의한 Template에 동적인 값을 넣어 출력하는 Template Engine을 사용하기도 합니다. 내 정보를 출력하는 페이지를 예로 들면 오른쪽 탭의 코드처럼 Template을 만들고 변수를 넣어 동적으로 HTML을 만들 수 있습니다. ​ 만약 Template 내부에서 사용되는 context가 아닌 Template source에 사용자 입력이 들어가게 된다면 악의적인 입력을 통해 개발자가 의도하지 않은 임의의 Template 기능을 실행할 수 있습니다. 즉, 사용자의 입력 데이터가 Template에 직접 사용될 경우 Template Engine이 실행하는 문법을 사용할 수 있기 때문에SSTI 취약점이 발생하게 됩니다. ​ SSTI 취약점을 ..
드림핵 포너블 도서관 pwn [*] Welcome to library! 1. borrow book 2. read book 3. return book 4. exit library [+] Select menu : 1 [*] Welcome to borrow book menu! 1. theori theory 2. dreamhack theory 3. einstein theory [+] what book do you want to borrow? : 1 book create complete! 1. borrow book 2. read book 3. return book 4. exit library [+] Select menu : 3 [*] Welcome to return book menu! [*] lastest book returned! 1. b..
웹해킹 14번 문제 var ul=document.URL; document.write(ul); var ul=pw.input_pwd.value document.write(ul); ​
드림핵 로그인 문제 admin admin 11 panda panda123 58 ​ 93 88 81 12 84 92 17 83 99 ​ 단박에 정답을 맞출 수 있었다 대략 5분 정도만에 답이 나왔다 몇 시간씩 걸린 사람들도 있다고 하던데 나는 직관적으로 답에 접근할 수 있어서 훨씬 쉽게 답을 맞출 수 있었던 거 같다 2단계 문제도 생각보다 쉽다는 것을 알 수 있었다 물론, 답을 맞췄다고 문제가 가진 단물을 다 먹은 것은 아니겠지만 어쨋든 나는 2단계 이상의 문제도 충분히 맞출 수 있는 능력이 있다는 것을 알게 되었다 ​ 개인적으로 웹 중에 가장 쉽게 풀었다 ;; guest 아이디 하나 만들어보고 바꿔보고 하면서 backcode가 존재한다는 점을 바로 파악할 수 있었다 (헤으응)라는 아이디가 존재한다는 것을 알게 되었고 그렇다..
드림핵 쿠키 쿠키 드림핵 워게임 중에서 가장 쉬운 문제이다 ​ 웹에서는 쿠키로 상대방을 구분한다 상대방이 어떠한 권한을 가지는 것이 적절한지 그 사람의 시그니처를 통해서 구분한다고 볼 수 있다 웹에서 각 사용자들에게 쿠키를 할당하는 것이다 ​ 프로그램을 보면 가장 핵심이 되는 부분이 있다 users = { 'guest': 'guest', 'admin': FLAG } 바로 이 부분이다. cookie를 할당하는데 사용자는 guest와 admin 두 명이다 더군다나 암호화하지도 않는다 ​ 개발자도구를 켜준 후에 guest에서 admin으로 바꾼다 바로 FLAG를 얻을 수 있다
드림핵 path 풀이 취약점 @app.route('/get_info', methods=['GET', 'POST']) def get_info(): if request.method == 'GET': return render_template('get_info.html') elif request.method == 'POST': userid = request.form.get('userid', '') info = requests.get(f'{API_HOST}/api/user/{userid}').text return render_template('get_info.html', info=info) ​ FLAG를 가져오는 부분 @app.route('/api/user/') @internal_api def get_flag(uid): try: in..