전체 글33 웹해킹 스터디 : 과제 1 1. 웹이란 무엇인가 많은 사람들이 "웹이란 무엇인가" 라고 묻는다면 인터넷 이라고 답하는 경우가 많다. 뭐 사람에 따라서는 네트워크나 다른게 아니냐고 묻는 경우가 많아서 먼저 개념을 확실하게 잡고가겠다 What is Internet? 인터넷은 통신 프로토콜을 이용해 정보를 주고받는 컴퓨터 네트워크이다. 네트워크의 네트워크를 구현하여 모든 컴퓨터를 하나의 통신망 안에 연결하고자 하는 의도에서 이를 줄여 인터넷이라고 처음에 이름지어졌다. 그럼 네트워크와의 차이점이 뭐냐? 라고 말하면 인터넷은 inter-net 이다. 즉 네트워크와 네트워크를 연결해 놓은 네트워크다. 즉 인터넷이 더 큰 개념이라고 생각하면 된다. What is Web? WWW(World Wide Web)이란 인터넷에 연결된 전세계 사용자들이.. 2024. 3. 23. [seKUCTF] simple culculater 먼저 들어가자 마자 /source 로 진입하여 소스코드를 확인해 달라고 한다 소스를 확인해 보면 다음과 같다 소스코드의 일부분이다 위의 /calcluate 부분을 자세히 보면, %s 부분에 user 라는 쿠키값이 들어가는것으로 보이는데 그것을 검증하지 않고 그대로 보여주는 것을 취약점으로 보인다. 다음과 같이 flask의 jinja2 문법이 실행되는것을 확인 하였다. ssti 취약점이 가능하다는 것이 확인 된 것이다. 다음으로 {{config.item()}} 을 넣어 확인해 보겠다. 딕셔너리 형태로 되어 있는 config들이 모두 출력되게 되면서 플래그도 도출되게 된 것을 볼 수 있다. 2023. 5. 7. [andriod 실습] frida lab 7번, 8번 7. Bruteforce check07Pin() then confirm with chall07() chall07Pin() 메소드에 브루트 포스( 무차별 대입)를 시도하여 chall07()로 메소드가 무슨 값인지 확인하는 것으로 보인다. 그니까 쉽게 말하자면 pin값을 무차별 대입으로 때려 맞추라는 소리 먼저 소스를 분석해 보자 public void chall07(String str) { if (challenge_07.check07Pin(str)) { this.completeArr[6] = 1; } else { this.completeArr[6] = 0; } } 인자로 전달되어진 str 값을 challenge_07 클래스의 check07Pin() 메소드를 호출 할 때 인자로 전달 했을 때 참이면 정답으로 .. 2023. 4. 29. [andriod 실습] frida lab 5번, 6번 5. Always send "frida" to chall05() 항상 frida 라는 문자열을 chall05에 보내야 하는 것으로 보이며, "항상" 이라는 말이 들어가 있는거 보면 한번만 보내는 것이 아닌 check 버튼을 누를 때마다 frida 라는 문자열을 보내야 하는것으로 파악된다. 먼저 chall05 메소드를 확인해 보면, public void chall05(String str) { if (str.equals("frida")) { this.completeArr[4] = 1; } else { this.completeArr[4] = 0; } } 위 4번과 같이 문자열을 보내는 방식은 동일하지만 else 로 한번더 확인을 해주면서 전송이 계속 되지 않으면 다시 0 값을 반환한다. 여기서 this.cha.. 2023. 4. 29. [seKUCTF] forcelogin1 이 문제 또한 /source로 들어가서 문제를 풀어달라고 하고 있다. 알맞는 id와 password를 /loginAction으로 보내면 그 id에 해당하는 flag에 저장되어있는 값을 읽는 것 처럼 보인다. 먼저 테스트로 나와있는 guest에 로그인 해보았다. 다음과 같이 권한이 없다고 나온다. admin으로 권한을 우회해접속해야 하는것으로 보인다. 그래서 평소에 하던거 처럼 union select를 이용하여 sql injection을 시도하려고 했는데 banlist = ['select','\'','"','`',';','limit','or','and','||','&&','ascii','substr','information','concat','inno'] 다음과 같이 ban list에 select 가 밴 .. 2023. 4. 9. [seKUCTF] forcelogin 2 다음과 같이 /source로 들어가 소스코드를 확인해 달라고 한다 들어가서 확인을 해 주자 다음과 같이 /loginAction을 해서 로그인 시에 해당 user id에 맞는 구문을 출력해 주는것으로 보인다. 로그인액션이 실행되는 구문을 자세히 살펴보자 select ID from "+table_+" where ID='"+id_+"' and PASSWORD='"+pass_+"'\ forcelogin 1과 달리 logintable 부분에 따로 t라는 인자를 받을수가 있어졌다 대신 ban list가 다음과 같이 늘어났다. banlist = ['inno','select','\'','"','`','information','concat','union','all','ascii','substr','#','--','\\'.. 2023. 4. 9. [system] crackme 4 이 문제를 풀기 위해서는 1. 값이 들어가는 주소 2. 결과를 결정하는 분기 (주소) 3. 값을 결정하는 주소 4. 시리얼 값이 담겨있는 주소 2023. 4. 6. [System] 함수의 에필로그 프롤로그 함수의 프롤로그와 에필로그를 알아보기 전에 몇 가지를 짚고 넘어가 보자! 먼저, 스택 프레임이란? 한 함수가 호출되면 스택에는 함수의 매개변수, 호출이 끝난 뒤 돌아갈 주소, 함수에서 선언된 지역변수 등이 저장되는데, 그 영역을 그 함수의 스택 프레임이라 한다. 이 스택 프레임들은 함수가 종료되면 스택에서 제거되고 저장해놓았던 '함수를 호출한 지점(RET)'으로 돌아가는데, 미리 말하자면, 이를 에필로그라고 한다. 그림에 있는 EBP와 ESP는 뭘까?? EBP는 스택 상의 한 데이터의 주소가 저장되어 있는 레지스터로, 그 데이터 위부터 한 함수가 실행된 이후의 값들이 쌓인다. 즉, 그 함수의 시작 지점이라고 생각할 수 있으며, 따라서 함수가 종료되지 않는 한 EBP 값은 변하지 않는다. ESP는 스택의 .. 2023. 3. 27. [system 실습] crackme3 해당 위치에서 프로그램 생성 해당 부분에서 창 생성 아무 글자나 넣어서 잘못된 걸 표기하기위해 아무 값이나 asdfasdf 를 넣어주었다. 해당 부분에서 무한 루트를 타는것을 봐서는 여기서 일정 문자열과 맞는지 비교하는 부분인 것 같다. 해당 부분에서 계속 무한루프가 걸려있는걸 확인하고 실행창을 보니 다음과같이 Wrong word!!!가 뜬것을 볼수 있다. 그럼 밑에 문자열인 infinity가 의심스러워 넣어본다면 어떨까? 다음과 같이 maxmin이 뜨는것을 볼 수 있다. 그럼 infinity를 임의의 값으로 수정해서 넣으면 똑같이 maxmin 이 출력될것인가? 다음과같이 똑같이 maxmin이 출력되는걸 확인하였고, infinity가 문제와 관련된 값이라는걸 알 수 있다. 2023. 3. 27. 이전 1 2 3 4 다음