web(98)
-
g00gle2 풀이
메인 페이지가 읽기 전용 스프레드시트로 되어있습니다 A1 칸을 보면 FLAG{????~~}가 적혀있고, 칸을 눌렀을 때 구글 독스 링크가 하나 나옵니다 이 링크로 접속해보겠습니다 액세스 권한이 없어서 접근이 불가능합니다 다시 시트로 돌아가보겠습니다 =REPLACE(IMPORTRANGE("https://docs.google.com/spreadsheets/d/1x7b8Wwp3jJAr6sgEG8RmuZOh-d7gpSmYvH9tmXWDq_c/edit","A1"),6,19,REPT("?",19-6)) A1 셀에 적혀있던 내용을 가져왔습니다 원본 텍스트에서 6~19번째 글자를 전부 물음표로 바꿔주고 있습니다 아마 저 구글 독스 링크에 있는 문자열이 플래그인 것 같은데, 플래그를 가져와서 함수로 가공을 해주고 있으니..
2024.04.10 -
baby toctou🍼 풀이 (PW = FLAG)
보호되어 있는 글입니다.
2024.04.08 -
old-57 풀이
메시지를 제출할 수 있는 폼이 보입니다 아무거나 넣어보겠습니다 Done이라는 글자만 뜨고, 별다른 변화는 없습니다 msg와 se를 GET 방식으로 받아온 후, addslashes()로 이스케이핑 해줍니다 그 후 preg_match()로 se에 대한 필터링을 합니다 (select, and, or, not, &, |, benchmark) mysqli_query()를 보면, chall57의 pw를 찾아야 한다는 것을 알 수 있습니다 msg에 값을 넣어줘도 뜨는 게 없으니, se 파라미터에 sleep() 함수를 사용해서 Time-Based로 풀어주겠습니다 import requests import time url="https://webhacking.kr/challenge/web-34/index.php?msg=he..
2024.04.07 -
old-04 풀이
해시처럼 보이는 값이 쓰여있고, 그 아래에는 password 제출 폼이 보입니다 소스를 보니 SHA1 해시였네요 무지성 브포를 방지하기 위한 sleep() 함수도 보입니다 hash에는 10000000부터 99999999까지의 값 중 하나를 랜덤으로 뽑은 뒤, "salt_for_you" 문자열을 붙여 넣어줍니다 그리고 이 값에 대한 sha1 해싱을 500번 진행해 줍니다 그렇다면 이 값은 해싱을 500번 진행하고 나온 결과값이겠네요! 그런데 새로고침 할 때마다 값이 바뀝니다..? 레인보우 테이블을 만들어서 풀어야 하는 문제네요 바로 생성 코드를 만들어줬습니다 처음에는 view-source에 나온 범위 그대로 10000000부터 99999999까지 for가 돌아가도록 만들었습니다 하지만 메모장에 적히는 속도..
2024.04.03 -
old-45 풀이
SQL Injeciton 문제입니다 id와 pw에 이스케이핑 처리를 해주고, id에는 mb_convert_encoding() 함수를 적용시킵니다 id와 pw 둘 다 preg_match()로 필터링을 해주는데, 쿼리의 결과가 존재하면서 id의 값이 "admin"일 때 문제가 해결됩니다 여기서 mb_convert_encoding() 함수에 대해서 찾아봤는데, php에서 인코딩 방식을 변환해 주는 함수라고 합니다 그리고 이 함수에는 취약점이 존재하는데, [%a1~%fe]\ 형태의 2byte는 1byte로 인식이 됩니다 이렇게 되면 addslashes()를 우회할 수 있게 됩니다 인젝션 할 때는 pw를 알아내서 admin으로 로그인하는 방법을 사용하려고 했습니다 하지만 pw가 md5 처리가 되어있어서 그 방법은..
2024.03.27 -
old-60 풀이
페이지에 처음 접속하면 idx를 보여줍니다 (51662) 접속 모드에 따라 페이지 동작이 다른 것으로 보입니다 이 부분에서 sleep() 함수가 사용되는 걸 보면 레이스 컨디션이 터질 것이라 예상됩니다 if문 부분을 보면, is_numeric()을 통해 PHPSESSID의 값이 숫자인지 아닌지 판단해 줍니다 만약 PHPSESSID가 숫자가 아니라면 Access Denied 처리를 해주네요 PHPSESSID를 숫자값으로 바꿔보겠습니다 이러면 로그인이 풀리게 됩니다 다시 로그인해서 문제에 접속해 주면.... Access Denied가 없어졌네요 제대로 우회가 된 걸 알 수 있습니다 이제 시크릿 탭을 하나 열어서 문제에 동시 접속을 해주며 레이스 컨디션을 터뜨려보겠습니다 시크릿 창에서도 PHPSESSID를 숫..
2024.03.25