목록전체 글 (105)
biny
https://www.kisia.or.kr/talent_support/ksr_news/201 한국정보보호산업협회 www.kisia.or.kr 한국정보보호산업협회에서 더 많은 카드뉴스를 확인할 수 있습니다.
https://www.kisia.or.kr/talent_support/ksr_news/191 한국정보보호산업협회 www.kisia.or.kr 한국정보보호산업협회에서 더 많은 카드뉴스를 확인할 수 있습니다.
보호되어 있는 글입니다.
#!/usr/bin/env python3 from flask import Flask, request, render_template app = Flask(__name__) try: FLAG = open("./flag.txt", "r").read() # flag is here! except: FLAG = "[**FLAG**]" @app.route('/', methods=['GET', 'POST']) def index(): menu_str = '' org = FLAG[10:29] org = int(org) st = ['' for i in range(16)] for i in range (0, 16): res = (org >> (4 * i)) & 0xf if 0 < res < 12: if ~res & 0xf ==..
페이지를 들어가면 이런 화면이 뜬다. admin 로그인을 시도했다. admin'# s fake_table_name괴 fake_col 알아내기 위해 해당 코드를 넣어주었다. a' union select version(),null,null,null # 알맞게 출력된다. table_name을 알기 위해 다음 코드를 작성해주었다. ' union select table_name, null, null, null from information_schema.tables# # 성공적으로 출력된다. onlyflag라는 테이블이 있었고 이것이 수상해보여 출력하기로했다. ' union select column_name, null, null, null from information_schema.columns where tabl..
보호되어 있는 글입니다.
위의 코드는 "userlevel"값의 처리과정이다. 결론적으로 값을 입력하였을 때 sql 구문이 작동하여 "userid"와 "userlevel" 을 불러오고 해당 값이 각각 "admin"과 "0"이면 FLAG값이 나타난다. 따라서 위의 sql구문을 통해 인젝션을 해주면 된다. "select * from users where userlevel'{uselevel}'" 가 현재 구문이기 때문에, userid 값만 불러오면 된다. 결론적으로 "0' AND userid='admin" 값을 넣어주면 아래와 같은 구문이 완성된다. 출처 : https://snowjeon2.tistory.com/54 DH{chatGPT_told_me_a_lullaby}
STEP 1 소스코드를 보면 name과 pw가 노출되어 있다. name = "dnyang0310" pw = "d4y0r50ng+1+13" 이면 step2로 넘어갈 수 있다. 하지만 pw필터링때문에 실패한다 구글링을 통한 해석은 다음과 같다 1. $name = preg_replace("/nyang/i", "", $input_name); 정규식 패턴뒤에 i가 붙어있으므로 대소문자를 구분하지 않고, "nyang" 문자를 빈문자열로 대한다 따라서 'dnyang0310' 이 나와야 하므로 "nyang" 문자열 사이에 해당 문자를 한번 더 집어넣어 "nyanyangng" 와 같은 문자열을 입력한다. 최종적으로 "dnyanyangng0310" 을 집어넣으면 된다. 2. $pw = preg_replace("/\d*\@..