2023. 10. 5. 19:05ㆍSWLUG/web hacking
네번째 문제
다음 문제를 풀어보겠다.
해당 내용을 확인했을때 , 아이디가 admin이라고 되어있는데 위처럼 guest라고 이미 설정이 되어있다.
그래서 ?id=admin 이라고 해봤는데 바뀌지 않는다.
그러면 이미 있는 guest를 무시하고 새롭게 작성할 방법이 있어야할 것 같다.
일단은 no에다가 1을 입력했더니 hello guest라고 뜬다.
admin으로 들어와야하는데 흠
admin으로 변경시도.
이렇게 바꿀 수도 있는 것 같다.
그렇게 기대하고 enter를 누르니까 다시 guest로 바뀌어버린다.
id에는 아무리 다른걸 입력해도 꿋꿋하게 guest만 있고, no에도 1만 들어갔을때 hello guest가 들어간다.
재도전 역시 실패
도저히 admin을 무력화시킬 방법을 모르겠어서, 찾아보았다.
나는 잘 몰랐지만, 위 코드에서 따옴표에 필터링이 걸려있다고 한다. 난 그러한 이유로 %27을 쓴 것은 아니었다.
그냥 쓴거였는데, 무튼 %27을 사용해도 딱히 문제가 풀리지는 않았었다.
그래서 풀이를 보니, admin이라는 문자를 hex(16진수) 값으로 입력하는 방법도 있다고한다.
이 방법은 string 우회방법인데 내가 원하는 문자열이 필터링되었을 경우 사용하는 방법이라고 한다.
데이터베이스마다 다를 수 있지만, 0xXXXXXX 라는 값(헥사값)이 입력이 되면 '스트링'으로 인식을 하게 된다고 한다.
그래서 admin을 16진수 값으로 바꾸고자 하였다.
admin을 16진수 값으로 바꾸게되면 "0x61646d696e"이다.
위와 같이 php?no=1234 or id= 0x61646d696e 를 넣어 무력화시켰다.
guest를 삭제할생각만 했지 뒤에 값을 추가로 넣을 생각을 못했다.
( or을 사용해서 뒤에 id를 추가하는 것과 필터링을 우회해 admin을 16진수로 표현하는 방법이 굉장히 신선하게 느껴졌다. 이러한 방법도 있구나 배워갈 수 있었다. )
0x61646d696e에 따옴표를 붙이지 않았지만, 이 헥사값 자체를 변수로 인정하지 않고 문자열로 받아들이기 때문에 답이 맞는 것이라고 한다.
(기억해두자)
참고 학습 자료
[LOS] 3. Goblin 문제 풀이 (tistory.com)
다른 방식으로 푼 자료
( 근데 아래와 같이도 풀어봤는데 나는 안됐다... )
[LOS] 3. goblin 문제 풀이 :: 끄적끄적 (tistory.com)
[ 중간 풀이 과정에서 겪었던 일]
하하
'SWLUG > web hacking' 카테고리의 다른 글
5주차_Webhacking 과제1 : DOM XSS (0) | 2023.11.04 |
---|---|
4주차_Webhacking 과제5 : los(orc) (0) | 2023.10.06 |
4주차_Webhacking 과제3 : los(cobolt) (0) | 2023.10.05 |
4주차_Webhacking 과제2 : los(gremlin) (1) | 2023.10.05 |
4주차_Webhacking 과제1: Dreamhack(simple_sqli) (2) | 2023.10.05 |