![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bKxMsI/btqwWfUjMFU/5buWKksLH3bA78k7Hpt8QK/img.png)
자주는 아니지만 가끔 인젝션 포인트가 order by절인 경우가 있다. 이런식으로 asc, desc 만 정해주는 인젝션포인트가 될 수도 있고, 아니면 정렬 기준까지 정해주는 인젝션 포인트 일수도 있다. 위 예시는 해당 포인트에 mysql_real_escape_string 함수가 적용되어 기본적으로 이스케이프 필터링이 적용되어 있는 상황이다. 이 때, 정렬 했을 때 동일한 데이터가 있다면 우리가 원하는 동작을 할 수 있다. reg_date로 정렬을 하는데 reg_date가 똑같은 데이터가 있으면 다음 정렬기준을 적용한다. 반드시!!!! 똑같은 데이터가 있어야한다!!! 우리는 바로 이 다음 정렬기준을 활용하여 원하는 쿼리문을 실행할 것이다. 일반적인 select문을 실행해 결과를 보는 형태는 안되고, 이런 ..
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
파일업로드 기능을 구현할 때 개발자는 취약점 방지를 위해 확장자에대한 제한을 거는 경우가 많다. 예를 들면, php, jsp, asp 확장자는 업로드할 수 없게 블랙리스트 필터링을 건다던지 jpg, jpeg, png 등의 이미지 파일만 업로드할 수 있게 화이트리스트 필터링을 건다던지 한다. 이 때 이 확장자를 우회하는 방법에 대해 몇가지 적어보겠다. 1. NULL Byte Bypass 예를 들면 webshell.php%00.jpg 와 같이 중간에 NULL Byte를 넣어주게 되면, NULL Byte는 문자열의 끝을 의미하므로 처리되는 파일명은 webshell.php가 되게된다. 2. HTML Encoding 잘 안되는 경우가 많은데 간단한 방법으로 webshell.ph%70 와 같이 HTML Encodi..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bvIpfM/btqwQWfT0N2/OW5Xgu6OmGKKni2sNKITm1/img.png)
PHP에서는 변수에 따로 Data Type을 지정하지 않는다. 그래서 위와같은 비교구문에서 취약점이 발생하기도 하는데, gen_key()는 항상 다른 문자열 Key를 반환해주는 함수이다. 근데 내가 입력한 값과 그 반환된 Key가 같게 할 수 있을리가 없다. 무작위로 반환해주는 것을 무슨수로 맞춰..? 이 표를 보면 PHP에서 == 으로 비교를 했을 때 "php" 문자열과 TRUE 불린값을 비교하면 TRUE가 나온다. 또한 "php" 문자열과 정수 0을 비교해도 TRUE가 나온다. 여기서 "php"는 임의의 문자열이고 어떤 문자열이와도 TRUE, 0 둘중하나로 비교하게되면 결과값은 TRUE가 나온다는 말이다. 진짜 말도안되는 일이 벌어지는 것이다.... 그래서 내가 $json->key에 TRUE 혹은 0..