龙空技术网

码码字,通俗易懂的说说php审计sql宽字节注入

网络三毛 205

前言:

此刻朋友们对“phpsql注入代码”可能比较关切,咱们都需要知道一些“phpsql注入代码”的相关内容。那么小编也在网上网罗了一些有关“phpsql注入代码””的相关资讯,希望你们能喜欢,你们快快来了解一下吧!

昨个介绍的那四位造成宽字节注入的屌丝,不知兄弟们是否还记得。

啥?忘了?我感觉有必要把昨天的再温馨一边,发射------->

PHP代码审计之SQL注入-第二回

兄弟们都看不下去了,码的教程既然是mysql开头函数的教程,这难道是在说1995年的技术吗,别介,吾觉得是可以做参考的,至于2017年的技术,别急,咱一定要码全了码详细了,先回顾下之前mysql开头的那些函数的辉煌时代。

----------------------------------华丽的分割线--------------------你是体会不到我到底有多美----------------------------------------

addslashes这个函数昨天已经干掉了,今的闯关任务就是搞定mysql_real_escape_string,然后就可以成功晋级了哈。

mysql_real_escape_string他会去转义sql语句中的特殊字符,并要去考虑当前的字符集(这句话要知道,他会去考虑我们设置的字符编码了),这么厉害吗?官方说了,可以安全用于mysql_query查询。呦呵,碾压addslashes了,好,翠花,上例子:

和昨天的那个例子比较,只是把addslashes函数替换成了mysql_real_escape_string,那结果呢,翠花,上结果:

按照昨天的老方法为什么注入成功了,难道官方骗了我们,接着看:

代码中使用了set name设置了字符集,但官方说了推荐我们用mysql_set_charset。所以我们首先要明白的是他们之间区别在哪?set name作用是什么,它会告诉服务器我用的字符编码是谁谁谁,我希望你返回我的结果字符编码和我一致。那么,mysql_set_charset呢,他是设置我连接数据库时的编码(就是说mysql_set_charset没设置,mysql_real_escape_string是没生效的),且他不仅拥有set name的能力,还多出来一个功能,多出来的那个功能是什么?往下看:

上文中所了,mysql_set_charset会去考虑我们设置的字符集,没错,这就是多出来的一个功能,他会根据我们的字符集采用不同的策略。瞬间高大上了有木有。

说这么多,代码怎么改,好,让翠花给我们展示一下修改后的代码:

so easy了,只加个mysq_set_charset即可,第一个参数是字符集,第二个参数是链接。

翠花的下一道菜,相信大家都知道了,请看:

查询成功了。那宽字节注入第一个防御方法就诞生了:使用mysql_set_charset('gbk')设置编码,然后使用mysql_real_escape_string()函数进行参数过滤。

但,还有一个普遍的问题。

在很久很久以前,大家写的cms有很多都有用到addslashes这个函数,那岂不是来一个什么%df%27就轻松拿下了吗,是的,但我们要修复是不可能把addslashes都修改成mysql_real_escape_string,有人说全部搜索替换呗,这个方法不可能一帆风顺的,那如何解决?

很简单:将character_set_client设置为binary二进制即可。

我们只需要做一个动作,就是在sql语句前指定一下连接的形式是二进制:mysql_query("SET character_set_connection=gbk,character_set_results=gbk,character_set_client=binary",$conn);

这个动作什么意思?一句话:mysql接受到客户端数据后,会认为其编码是character_set_client,然后会将其转化为character_set_connection的编码,查询结果后会以character_set_results的编码返回客户端。

ok,宽字节第二个防御方法诞生了:character_set_client设置成binary,所有数据以二进制形式传递,都是0101那种了,敢问还会存在宽字节注入问题吗。

码字好累,先来装个逼休息下:

四大屌丝(并非天王)搞定两个了,mysql_real_escape_string是否有实力,我们还要看mysql_set_charset有没有设置,没有的话就直接ko了。

代码审计方法请参考上篇的结尾处。

相信到这兄弟们都基本了解宽字节注入了,下回了再一块唠唠pdo和其他两个天王。

-----------------------------------------你敢说我的这个分割线不美?------------------------------------------------------------------------

ok,如果大家喜欢网络三毛,欢迎wx关注网络三毛,不定期发表关于审计、攻防、安全、渗透方面的知识。

--------------回见!

标签: #phpsql注入代码