Less-36
我们直接看到36关的源代码
上面的check_quotes()函数是利用了mysql_real_escape_string()函数进行的过滤。
mysql_real_escape_string() 函数转义 SQL 语句中使用的字符串中的特殊字符。
下列字符受影响:
-
x00
-
-
-
'
-
"
-
x1a
如果成功,则该函数返回被转义的字符串。如果失败,则返回 false。
但是因mysql我们并没有设置成gbk,所以mysql_real_escape_string()依旧能够被突破。方法和上述是一样的。
Payload:
http://127.0.0.1/sqli-labs/Less-36/?id=-1%EF%BF%BD%27union%20select%201,user(),3--+
这个我们利用的 ' 的utf-16进行突破的,我们也可以利用%df进行。
Payload:
http://127.0.0.1/sqli-labs/Less-36/?id=-1%df%27union%20select%201,user(),3--+
Notice:
在使用mysql_real_escape_string()时,如何能够安全的防护这种问题,需要将mysql设置为gbk即可。
设置代码:
Mysql_set_charset('gbk','$conn')