본문 바로가기

전체 글

(156)
[suninatas] 웹해킹 8번 / Burp Suite Intruder 실습 서버에 접속하면 입력폼이 나온다! 코드를 보면 Password가 0 ~ 9999인 것을 알 수 있다. python으로 브루트포싱 하면 빠르지만 Burp Suite의 기능을 실습하는게 목적이므로 해당 기능을 이용해보자. 먼저 패킷을 잡고 우 클릭을 누른다. Send to Intruder을 누르고 해당 탭으로 이동해준다. brute forcing을 할 데이터를 선택해준다. 다음은 payload 탭으로 이동 후 위와 같이 설정해준다. 해당 기능이 좀 많이 느려서 정답 근처에서 수행해준다. 마지막으로 setting 탭에서 매칭시킬 문자열을 입력한다. 공격 시 7707에서 Authkey가 발견되었다.
[Dreamhack] Cherry write up 오랜만에 포너블 워게임 #include #include #include #include #include #include void alarm_handler() { puts("TIME OUT"); exit(-1); } void initialize() { setvbuf(stdin, NULL, _IONBF, 0); setvbuf(stdout, NULL, _IONBF, 0); signal(SIGALRM, alarm_handler); alarm(30); } void flag() { char *cmd = "/bin/sh"; char *args[] = {cmd, NULL}; execve(cmd, args, NULL); } int main(int argc, char *argv[]) { int stdin_fd = 0; i..
[H4CKING GAME] Smuggling 1-day 분석을 하기로 마음 먹고 주제를 Http Request Smuggling으로 잡았는데 공부하다 보니 전에 Smuggling 문제가 있던게 생각나서 풀어보려한다. 해당 워게임 사이트는 팀 H4C에서 운영하는 사이트라고한다. 서버에 접속하면 위와 같은 문자열만 리턴하고 끝이다. 문제에서 주어진 코드 파일을 살펴보자.. main.py main 코드이다. from flask import Flask app = Flask(__name__) flag = open("FLAG").read() @app.route('/', methods=['GET', 'POST']) def main(): return 'Hello! Our Team is TeamH4C' @app.route('/guest', methods=['GET..
[1-day] CVE-2021-40346 / HTTP Request Smuggling Description 해당 취약점은 오픈소스 로드 밸런스 프록시 서버인 haproxy에서 발견되었습니다. 이 취약점은 Integer Overflow 취약점으로 HTTP Request Smuggling 공격이 가능하며 CVSSv3가 8.6으로 측정되었습니다. HTTP Request Smuggling 공격은 프록시 서버와 백엔드 서버가 패킷을 해석하는 방식이 다른 점을 이용하는 공격입니다. 해당 공격은 Integer Overflow를 통해 트리거됩니다. CVE-2021-40346은 HAProxy 2.025, 2.2.17, .2.3.14, 2.4.4 버전에서 패치되었으며 영향을 받는 버전은 해당 버전들의 이전 버전입니다. HTTP Request Smuggling HTTP Request Smuggling HTT..
[Webhacking.kr] old-19 write up 일단 풀긴했는데 의도와는 다른 풀이인 것 같다.. 문제에 들어가면 바로 저 화면은 아닌데 입력폼 하나가 존재한다. guest를 치면 hello guest라는 문자열이 리턴된다. admin을 쳐봤다. 다음과 같은 문자열이 나온다. 게싱이 필요한 문제 같다.. 먼저 코드를 확인했지만 별다른 단서가 없어서 쿠키를 봤다. 일반 문제와 다르게 userid라는 쿠키값이 존재한다. 처음에 추측한 걸로는 userid값이 내가 guest를 입력한다면 guest에 대한 암호화 값이라고 생각했다. 일단 base64는 길이가 너무 길기 때문에 아닌 것 같았다. 그러던 와중, admin 문자열을 필터링하고 있다고 생각해서 admi%00n을 넣어서 admi까지만 인식하게 했다. 그랬는데 풀림 ㄷㄷ 풀린 이유를 생각해보면 user..
[Webhacking.kr] old-44 write up 문제는 입력폼 하나만 주어진다. 코드를 보자, 코드는 간단하게 구성되어 있다. 주석으로 ls 명령어를 실행시키라는 힌트가 주어진다. if문을 살펴보면, 입력폼에 입력한 값에서 5바이트를 가져와 system 인자에 넘긴다. system 함수 인자로는 echo 'hello! {$id}'가 들어가 있기 때문에 command injection을 위해 싱글쿼터 탈출이 필요하고 ls 실행을 위해 메타 문자 세미콜론을 써야한다. 즉, 싱글쿼터와 메타문자 3바이트를 쓰면 나머지는 2바이트 밖에 사용이 불가능하다. system("echo 'hello! ';ls''") ls 결과 flag_29cbb...과 index.php가 나왔다. 여기서 약간의 게싱이 필요했다. flag_29cbb...는 flag형식이 아니기 때문에 ..
[Webhacking.kr] old-51 write up 👆 위는 문제 화면이다. 뭔가 sqli의 냄새가나는데, 코드를 보자. 코드를 보니 sqli가 확실해졌다. 문제는 쿼리문이 참일 경우 해결이 된다. 필터링 부분을 보자. 필터링 부분을 보면 addslashes로 인해 싱글쿼터 탈출이 불가능하며, pw에 md5 해시함수가 걸려 있어서 pw에서도 싱글쿼터 탈출이 불가능하다.. 아무리 생각해봐도 답이 안나와서 살짝 힌트를 보니 md5 함수에 취약점이 존재한다. md5 함수의 두 번째 인자에 true or false값을 줄 수 있다. 기본값은 false이다. 먼저 false일 경우에는 32바이트의 16진수 문자열로 해시화되어 리턴되지만, true일 경우에는 16바이트의 2진수 바이너리 값이 리턴된다. 이 말은 2진수 바이너리가 or이나 싱글쿼터를 나타낼 경우 쿼리..
[Lord of SQLInjection] los 11번 golem write up 문제는 위와 같다. blind sqli 같아 보이지만 substr이 필터링 되고 있고 = 부등호 역시 필터링 되고 있다. 첫 번째 조건에서 id가 admin일 때 쿼리의 참 거짓을 확인할 수 있다. 이점을 이용하자. admin's pw length 길이는 >, 7일때는 참을 반환하고 있다. 8을 넣어보자 8을 넣으니 거짓이 됐고 따라서 admin의 길이가 8자리임을 추측할 수 있다. exploit import requests import string ch = string.digits + string.ascii_letters + string.punctuation url ..