본문 바로가기

전체 글479

[los.rubiya.kr] darkknight #12 [darkknight] 저번 문제에 비해 preg_match가 많아졌다.. pw에는 preg_match에 의해 싱글쿼터가 안되고no에는 preg_match에 의해 싱글쿼터, substr, ascii, =이 안된다..저번 문제처럼 =은 like, substr은 left로 우회를 하면 되고 문자열을 입력할때는 더블쿼터를 쓰면 될 것 같다.?no="" or id like "admin" and length(pw) like 숫자 이런식으로 길이를 알아내고?no="" or id like "admin" and left(pw,1) like "문자" 이런식으로 비밀번호를 알아내면 될것 같다. import requests for admin_len in range(99) : URL='http://los.rubiya.kr/d.. 2018. 8. 26.
[los.rubiya.kr] golem #11 [golem] 이번 문제는 preg_match에 의해서 or, and, substr(, =이 막혀있다.or는 ||, and는 &&, substr은 mid, left, substring, =은 like, in으로 우회가 가능하다.SQL 인젝션 우회 정리 이번 문제도 직접 비밀번호를 찾아야하니 length함수와 left함수를 이용하여 찾자.?pw=' || id like 'admin' && length(pw) like 숫자 --%20 이런식으로 하면 길이를 알 수 있을것 같고?pw=' || id like 'admin' && left(pw,1) like 문자 -- %20 이런식으로 하면 비밀번호를 알 수 있을것 같다.또한 url로 직접 치는것이기 때문에 && 같은경우는 %26으로 입력해 주면 된다. import.. 2018. 8. 26.
[los.rubiya.kr] skeleton #10 [skeleton] 이번엔 id=admin을 꺼내오면 된다 싱글쿼터가 막히지 않았으므로pw는 아무값을 넣고 id=admin을 넣은후 and1=0은 주석처리를 하면될것 같다.?pw=' or id='admin' --%20를 입력하면 클리어! 2018. 8. 26.
[los.rubiya.kr] vampire #9 [vampire] 이번에도 id가 admin이면 풀리는 문제이다. preg_match함수에 의해 싱글쿼터를 사용할수 없고strtolower함수에 의해 모든 문자를 소문자로 변경한다. 즉, 이번엔 Admin이 admin으로 바뀐다.그리고 str_replace함수에 의해서 admin이 "" 그냥 공백으로 바뀐다.즉, admin을 입력해야하지만 admin을 입력하면 그냥 공백으로 바뀌며, 이번에는 Admin이렇게 대문자를 사용해도 소문자인admin으로 바뀐다.admin이 공백으로 바뀌는 것을 이용하여 풀면 된다. ?id=aadmindmin을 하면 admin이 공백이되고 admin만 남으므로 클리어. 2018. 8. 26.
[los.rubiya.kr] troll #8 [troll] id=admin이면 풀리는 문제이다. 하지만 id에 admin을 넣으면 HeHe가 출력이 된다.또한 preg_match에 의해서 싱글쿼터도 쓰지 못한다. id를 검사하는 함수가 ereg이므로 대소문자 구분을 한다. 즉 Admin과 admin은 전혀 다른 문자이다.하지만 mysql에서는 대소문자 구분을 하지 않으므로 Admin과 admin이 같다.즉, ?id=Admin 이라 입력하면 문제가 풀릴것 같다. 2018. 8. 26.
[los.rubiya.kr] orge #7 [orge] 문제를 보니 preg_match함수에 의해 or과 and를 사용할 수없으므로 ||와 &&로 우회를 해줘야 한다.그리고 다른 별다른 필터링이 없으므로 length와 substr을 이용하여 비밀번호를 구할수 있을것 같다.?pw=' || id='admin' && length(pw)='숫자 를 이용하여 길이를 구하고?pw=' || id='admin' && substr(pw,1,1)='문자 를 이용하여 패스워드를 구하면 된다. import requests for admin_len in range(99) : URL='http://los.rubiya.kr/orge_bad2f25db233a7542be75844e314e9f3.php' query={'pw': '\' || id=\'admin\' && lengt.. 2018. 8. 25.
[Reversing] OllyDbg 설치 #64bit [OllyDbg 설치] OllyDbg : 바이너리 코드 분석을 위한 디버거 (32비트 운영체제 전용이다) OllyDbg 다운로드 공식 페이지 64비트에서 사용하기 - Olly Advanced 플러그인을 적용하면 Ollydbg를 64비트에서 사용이 가능해진다. [Olly Advanced 플러그인은 OllyDbg의 버그 패치, 다양한 안티 디버깅에 대한 방어 기능을 지원한다.] - 다운 받은 Olly Advanced v1.27.rar을 압축해제 한 후 advancedolly.dll 플러그인 파일을 OllyDbg설치 폴더에 복사한다. - Olly Advanced 플러그인의 옵션 메뉴를 선택한다. * Plugins 메뉴가 없는 경우 : Plugins 옆의 Options - Appearance - Directio.. 2018. 8. 24.
[pyhon] 웹 크롤러[정규표현식] #이미지다운 [웹 크롤러 만들기] import requests import urllib.request import re # [img 태그] URL = 'https://www.daum.net/' headers = {'Content-Type': 'application/json; charset=utf-8'} res = requests.get(URL, headers=headers) html = res.text re_img = re.compile("]+>", re.MULTILINE) img_tag = re_img.findall(html) # [src 속성] re_src = re.compile("[Ss][Rr][Cc][^\s]+", re.MULTILINE) img_src = re_src.findall('\n'.join(img_.. 2018. 8. 24.
[pyhon] 웹 크롤러[정규표현식] #a태그 [웹 크롤러 만들기] import requests import re # [a 태그] URL='https://www.daum.net/' headers = {'Content-Type': 'application/json; charset=utf-8'} res=requests.get(URL,headers=headers) html=res.text re_a = re.compile("]+>", re.MULTILINE) a_tag = re_a.findall(html) print('\n'.join(a_tag)) [python] requests 모듈 정리 2018. 8. 24.
[etc] 빅/리틀 엔디언 #비교 [빅/리틀 엔디언] 빅 엔디언 : 작은 단위가 앞으로 온다.리틀 엔디언 : 큰 단위가 앞으로 온다.미들 엔디언 : 두 경우에 속하지 않거나 둘을 모두 지원하는 경우 저장 방식10진수 빅 엔디언 리틀 엔디언0 0x00000000 0x000000001 0x00000001 0x010000002 0x00000002 0x02000000 표현 _ 0x12345678- 빅 엔디언 : 12 34 56 78 - (높은주소 ---- 낮은주소) - 리틀 엔디언 : 78 56 34 12- (낮은주소 ---- 높은주소) - 미들 엔디언 : 34 12 78 56 or 56 78 12 34 장점 - 빅 엔디언 : 디버그를 편하게 해준다 (메모리의 값을 보기가 편함) ex) 0x59654148 : 59 65 41 48- 리틀 엔디언.. 2018. 8. 24.
[Reversing] 어셈블리어 비교 #Intel vs AT&T [어셈블리어 비교] Intel : 접두사 _ h(16진수), b(2진수), 0(6진수)AT&T : 접두사 _ %(레지스터), $(값) Operands의 위치 차이 _ Intel 과 AT&T는 정반대이다.Intel destination, sourceAT&T source, destination 메모리 주소 참조Intel [eax]AT&T (%eax) 2018. 8. 24.
[los.rubiya.kr] darkelf #6 [darklef] preg_match에 or, and가 있다. or과 and를 우회하는 방법은 ||와 &&로 우회를 하면 된다.이외에 특별한 것은 없으니 ?pw=' || id='admin 을 입력하면 문제가 클리어될것 같다. 2018. 8. 24.
[Reversing] Reversing? [시작] 리버싱 : 프로그램의 구조, 기능, 동작 등을 역으로 따라가며 분석하고 그 원리를 이해하며 부족한 부분을 보완하며 새로운 기능 등을 추가하는 작업 분석 방법- 정적분석 : 파일의 겉모습을 관찰하며 분석하는 방법. 즉, 파일을 실행하지 않고, 파일의 종류(exe, dll, doc, zip 등), 크기, 헤더정보, 실행 압축 여부, 등록 정보, 디지털 인증서 등의 내용을 확인하는 것. 또한 디스어셈블러를 이용해서 내부코드와 그 구조를 확인하는 방법이다.- 정적 화이트박스 분석 : 프로그램을 실행하지 않고 소프트웨어의 설계, 코드나 구조 등에서 상세하게 버그를 찾을 수 있는 방법- 정적 블랙박스 분석 : 프로그램의 소스코드를 파악할수 없고, 실행시키지도 않은 상태에서 수행하는 분석.- 동적분석 : 파.. 2018. 8. 21.
[los.rubiya.kr] wolfman #5 [wolfman] 이번 문제는 preg_match에 띄어쓰기가 포함되어 있어 띄어쓰기를 쓰지 못할것 같다.하지만 우리는 get방식으로 보내는것이기 때문에 url인코딩을 이용할수 있고, 공백을 대체할것은 많다띄어쓰기 대신 %0a, %09, %0d, %0b, %0c 를 쓰면 된다.?pw='%0aor%0aid='admin 을 입력하면 clear..! 2018. 8. 21.
[los.rubiya.kr] orc #4 [orc] 아래쪽의 if문을 보니 실제 비밀번호를 알아야 문제가 풀리는것 같다.우선 length와 substr함수를 이용해 blind sql injection을 하여 실제 비밀번호를 알 수 있을것 같다.?pw=' or length(pw)=숫자 --%20 을 하여 비밀번호의 길이를 알 수 있다.또한 ?pw=' or substr(pw,1,1)="문자" --%20 을 하면 비밀번호를 알 수 있다.직접 하긴 복잡하니 python requests모듈을 이용해서 직접 비밀번호를 구해보자. import requests for admin_len in range(99) : URL='http://los.rubiya.kr/orc_60e5b360f95c1f9688e4f3a86c5dd494.php' query={'pw': '\.. 2018. 8. 20.