@markdown
# MySQL 이 동일 취급하는 문자들
_
제 2회 UbuntuCtf 를 친구와 함께 풀면서 IlikePizza 라는 문제를 풀면서 알게 된 사실을 시작으로 더 알아 보게 되었다.
실제로는 풀지 못 했던 것이고 나중에 답이 나오고 서야 알게 되었고 바로 파이썬 코드를 작성하여 알아보았다.
_
```python
import pymysql.cursors
import string
alphabet = string.ascii_lowercase
conn = pymysql.connect(host='localhost', user='root', password='apartapart', charset='utf8mb4')
cur = conn.cursor()
sql = "select if('{}'='{}',10,0);"
results = {}
def Findthem():
for c in alphabet:
for uni in range(32, 10000):
if (chr(uni) is "'" or chr(uni) is '"' or chr(uni) is "\\"):
continue
print(sql.format(c, chr(uni)), ":", uni)
cur.execute(sql.format(c, chr(uni)))
result = cur.fetchone()
if (result[0] == 10):
print('CASE', c)
if (results.keys().__contains__(c) == False):
results[c] = [];
results[c].append(uni)
print("Find them!!", results[c])
print("END CASE", c, "\n", results[c])
return results
def __printdic__(dic):
print('{')
for key, value in dic.items():
tempstr = ''
for i in value:
tempstr += chr(i) + " "
print("\t" + key + " : [ " + tempstr + "]")
print('}')
def __main__():
dic = Findthem()
__printdic__(dic)
__main__()
```
_
이 코드로 돌린 결과 각각의 ascii 는 다음과 같은 유니코드문자들과 같다는 취급을 받는 다는 것을 알 수 있었다.
_
## Result
a : [ A a À Á Â Ã Ä Å à á â ã ä å Ā ā Ă ă Ą ą Ǎ ǎ Ǟ ǟ Ǡ ǡ Ǻ ǻ Ȁ ȁ Ȃ ȃ Ȧ ȧ Ḁ ḁ Ạ ạ Ả ả Ấ ấ Ầ ầ Ẩ ẩ Ẫ ẫ Ậ ậ Ắ ắ Ằ ằ Ẳ ẳ Ẵ ẵ Ặ ặ ]
b : [ B b Ḃ ḃ Ḅ ḅ Ḇ ḇ ]
c : [ C c Ç ç Ć ć Ĉ ĉ Ċ ċ Č č Ḉ ḉ ]
d : [ D d Ď ď Ḋ ḋ Ḍ ḍ Ḏ ḏ Ḑ ḑ Ḓ ḓ ]
e : [ E e È É Ê Ë è é ê ë Ē ē Ĕ ĕ Ė ė Ę ę Ě ě Ȅ ȅ Ȇ ȇ Ȩ ȩ Ḕ ḕ Ḗ ḗ Ḙ ḙ Ḛ ḛ Ḝ ḝ Ẹ ẹ Ẻ ẻ Ẽ ẽ Ế ế Ề ề Ể ể Ễ ễ Ệ ệ ]
f : [ F f Ḟ ḟ ]
g : [ G g Ĝ ĝ Ğ ğ Ġ ġ Ģ ģ Ǧ ǧ Ǵ ǵ Ḡ ḡ ]
h : [ H h Ĥ ĥ Ȟ ȟ Ḣ ḣ Ḥ ḥ Ḧ ḧ Ḩ ḩ Ḫ ḫ ẖ ]
i : [ I i Ì Í Î Ï ì í î ï Ĩ ĩ Ī ī Ĭ ĭ Į į İ ı Ǐ ǐ Ȉ ȉ Ȋ ȋ Ḭ ḭ Ḯ ḯ Ỉ ỉ Ị ị ]
j : [ J j Ĵ ĵ ǰ ]
k : [ K k Ķ ķ Ǩ ǩ Ḱ ḱ Ḳ ḳ Ḵ ḵ ]
l : [ L l Ĺ ĺ Ļ ļ Ľ ľ Ḷ ḷ Ḹ ḹ Ḻ ḻ Ḽ ḽ ]
m : [ M m Ḿ ḿ Ṁ ṁ Ṃ ṃ ]
n : [ N n Ñ ñ Ń ń Ņ ņ Ň ň Ǹ ǹ Ṅ ṅ Ṇ ṇ Ṉ ṉ Ṋ ṋ ]
o : [ O o Ò Ó Ô Õ Ö ò ó ô õ ö Ō ō Ŏ ŏ Ő ő Ơ ơ Ǒ ǒ Ǫ ǫ Ǭ ǭ Ȍ ȍ Ȏ ȏ Ȫ ȫ Ȭ ȭ Ȯ ȯ Ȱ ȱ Ṍ ṍ Ṏ ṏ Ṑ ṑ Ṓ ṓ Ọ ọ Ỏ ỏ Ố ố Ồ ồ Ổ ổ Ỗ ỗ Ộ ộ Ớ ớ Ờ ờ Ở ở Ỡ ỡ Ợ ợ ]
p : [ P p Ṕ ṕ Ṗ ṗ ]
q : [ Q q ]
r : [ R r Ŕ ŕ Ŗ ŗ Ř ř Ȑ ȑ Ȓ ȓ Ṙ ṙ Ṛ ṛ Ṝ ṝ Ṟ ṟ ]
s : [ S s ß Ś ś Ŝ ŝ Ş ş Š š ſ Ș ș Ṡ ṡ Ṣ ṣ Ṥ ṥ Ṧ ṧ Ṩ ṩ ẛ ]
t : [ T t Ţ ţ Ť ť Ț ț Ṫ ṫ Ṭ ṭ Ṯ ṯ Ṱ ṱ ẗ ]
u : [ U u Ù Ú Û Ü ù ú û ü Ũ ũ Ū ū Ŭ ŭ Ů ů Ű ű Ų ų Ư ư Ǔ ǔ Ǖ ǖ Ǘ ǘ Ǚ ǚ Ǜ ǜ Ȕ ȕ Ȗ ȗ Ṳ ṳ Ṵ ṵ Ṷ ṷ Ṹ ṹ Ṻ ṻ Ụ ụ Ủ ủ Ứ ứ Ừ ừ Ử ử Ữ ữ Ự ự ]
v : [ V v Ṽ ṽ Ṿ ṿ ]
w : [ W w Ŵ ŵ Ẁ ẁ Ẃ ẃ Ẅ ẅ Ẇ ẇ Ẉ ẉ ẘ ]
x : [ X x Ẋ ẋ Ẍ ẍ ]
y : [ Y y Ý ý ÿ Ŷ ŷ Ÿ Ȳ ȳ Ẏ ẏ ẙ Ỳ ỳ Ỵ ỵ Ỷ ỷ Ỹ ỹ ]
z : [ Z z Ź ź Ż ż Ž ž Ẑ ẑ Ẓ ẓ Ẕ ẕ ]
2019.02.18
http://mysql.rjweb.org/utf8_collations.html
'Security > SQL Injection' 카테고리의 다른 글
[ 01 ] Blind SQL Injection (0) | 2017.12.07 |
---|---|
[ 00 ] SQL Injection 기초 (0) | 2017.12.06 |