hacking study/모의 해킹 프로젝트

정보보안 스터디 - 15주차 4일 - 인젝션 방지 치환 함수

wonder12 2023. 1. 23. 02:00

☞ 인젝션 방지 치환 함수

 

mysqli_real_escape_string 

",',\,\n(줄바꿈),\r 기호에 대해 이스케이프 문자인 \를 붙여서

SQLi 공격 구문, 스크립트 삽입으로의 역할을 하지 못하게 합니다.

>>>> 따라서 <,> 및 and, select, union 등 따옴표를 사용하지 않는 SQL 공격 구문은 사용이 가능합니다. 

해당 함수가 모든 기호를 치환하거나 escape 해주는 것은 아니기 때문에

함수가 어떤 기호를 막고 있는지, SQL문을 예측 및 확인해보고 따옴표 없이 SQLi 가능한 부분을 찾아야합니다.

 

addslashes($data)

마찬가지로 ', " 기호에 대해 \ 이스케이프 문자를 붙입니다.

입력값이 DB에 저장될 경우에는 \가 붙어서 저장되기 때문에 불러올 때는 stripslashes() 함수를 사용해줘야합니다. 

 

htmlspcialchars,

htmlentities

'를 제외하고 ", <, > 기호에 대해 URL encoding이 아닌 HTML entity로 표현합니다.

&
" &quot;
' &apos; 또는 &#039;
< &lt;
> &gt;

원하면 설정 변경으로 '를 치환시키도록 설정할 수 있습니다.

 

 

 

 

 

SQLi 삽입이 되는 것이 생각보다 상당히 많기 때문에 SQL문이 사용되는 모든 경우를 파악해보고

insert, update문 등에서 있지 않을지, union이 가능한 부분은 있을지,

따옴표가 없어도 가능한 부분이 있을지 고민해봐야합니다.

 

../ ..%2f

평문 뿐만아니라 url 인코딩도 잘 막고 있는지 확인해야합니다.

 

 

 

 

보고서를 쓸 때 처음에는 완벽하게 할려고 하지 않고 쓰려고 합니다. 더 느려지고 집중이 안되기 때문에 쳐집니다.

그냥 빠르게 처리하고 익숙해지는게 우선입니다. 또한 본인 페이스대로 하는게 중요합니다.