view-source 클릭
개발자 도구를 이용해서 살펴보니까 login할 때 쓰이는 아이디와 번호다 lid, lphone이네요!
소스코드를 정리해 봅시다.
<login>
1. lid와 lphone에 함수 addslashes를 적용한다.
2. lid와 lphone에에 해당하는 id와 lv를 선택한다.
3. id가 존재하면 lv를 출력한다.
4. 만약 lv==admin이면 문제해결
<join>
1. id와 phone에 함수 addslashes를 적용한다.
2. phone>=20이면 access denied
3. id에 admin(대소문자상관x)이 있으면 access denied
4. phone에 admin|0x|#|hex|char|ascii|ord|select(대소문자상관x)이 있으면 access denied
5. 테이블에 (id, phone(정수만가능), 'guest') 삽입
**가입을 할 땐 무조건 lv=guest
++ addslash함수는 아래 4개의 특수문자에 슬래시를 추가한다.
- 작은 따옴표 (')
- 큰 따옴표 (")
- 백 슬래시 (\)
- 없는
id=song, phone=1234 로 join후 login 결과
처음에는 addslash함수를 우회할려고 이것저것 찾아봤지만 실패했다.
그렇다면 애초에 회원가입을 할 때 lv=admin으로 가입하자는 생각이 들어서
가입을 새로 해 보았다.
이렇게 가입을 하면,
insert into chall59 values('test',1234,1)-- ,'guest')
이런 식으로 lv 값 변경이 가능하다!
그럼 lv값을 1대신에 admin으로 넣기 위해 sql함수를 하나 사용해 보자.
내장함수 참고 및 출처 사이트
https://blog.naver.com/foryunha/20139047181
[DB]Mysql 내장함수
MySql 내장함수 문자함수 REPLACE REPLACE('string‘,’기존문자열‘,’대체문자열‘) 문...
blog.naver.com
SQL에는
이런 함수가 있다.
이걸 사용하면 admin == reverse('nimda') 가 되는 것이다.
그럼 id=test2, pw=1, reverse('nimda'))--
insert into chall59 values('test',1, reverse('nimda'))-- ,'guest')
을 시도했으나.. 글자수 때문인지 access denied가 떳다.
무슨 방법으로 하지 하다가 다른 블로그를 보고 알게 되었다.
id=nimda 로 설정하고 reverse(id)를 하면 된다는 것..!
그럼 회원가입을 다시 해보자
id=nimda , pw=1, reverse(id))--
insert into chall59 values('nimda',1, reverse(id))-- ,'guest')
로 시도!!
그리고 id=nimda, pw=1로 로그인 해본다.
'보안 공부 > webhacking.kr' 카테고리의 다른 글
webhacking.kr 34번 풀이 (0) | 2022.01.19 |
---|---|
webhacking.kr 29번 풀이 (0) | 2022.01.17 |
webhacking.kr 56번 풀이 (0) | 2022.01.16 |
webhacking.kr 55번 풀이 (0) | 2022.01.15 |
webhacking.kr 51번 풀이(PHP md5함수 취약점) (0) | 2022.01.05 |