PHP编程:PHP代码履行破绽参考材料总结
即使你理解不了PHP,但是也必须先跟它混个脸熟,看,一遍遍的看,看的同时一边琢磨,一边按照它所教的打代码,即使你搞不清楚那些代码到底是干嘛的,但是起码你应该找找感觉。 一 代码履行函数PHP中可以履行代码的函数。如eval()、assert()、``、system()、exec()、shell_exec()、passthru()、 escapeshellcmd()、pcntl_exec() 等
demo code 1.1:
二 文件包括代码打针
文件包括函数在特定前提下的代码打针,如include()、include_once()、 require()、require_once()。
当allow_url_include=On ,PHP Version>=5.2.0 时,招致代码打针。
demo code 2.1:
会见http://127.0.0.1/include.php?a=data:text/plain,%3C?php%20phpinfo%28%29;?%3E 即
履行phpinfo()。
三 正则婚配代码打针
尽人皆知的preg_replace()函数招致的代码打针。当pattern中存在/e形式润色符,即答应履行代码。这里咱们分三种情形会商下
3.1 preg_replace() pattern 参数打针
pattern即第一个参数的代码打针。
当magic_quotes_gpc=Off时,招致代码履行。
demo code 3.1:
会见http://127.0.0.1/preg_replace1.php?reg=%3C\/php%3E/e 即
履行phpinfo()。
3.2 preg_replace() replacement参数打针
replacement即第二个参数的代码打针,招致代码履行。
demo code 3.2:
当咱们提交 http://127.0.0.1/preg_replace2.php?h=phpinfo() 即
履行phpinfo()。
3.3 preg_replace()第三个参数打针
咱们经由过程机关subject参数履行代码。提交:http://127.0.0.1/preg_replace3.php?h=
phpinfo()
或 http://127.0.0.1/preg_replace3.php?h=
${phpinfo%28%29}
招致代码履行
demo code 3.3:
四 静态代码履行
4.1 静态变量代码履行
demo code 4.1:
咱们提交 http://127.0.0.1/dyn_func.php?dyn_func=system&argument=ipconfig 履行ipconfig号令
4.2 静态函数代码履行
demo code 4.2:
咱们提交 http://127.0.0.1/create_function.php?foobar=system%28dir%29 履行dir号令
五 其他
5.1 ob_start()函数的代码履行
demo code 5.1:
5.2 array_map()函数的代码履行
demo code 5.2:
咱们提交 http://127.0.0.1/array_map.php?callback=phpinfo 即履行phpinfo()。
5.3 unserialize()与eval()
unserialize()是PHP中利用率十分高的函数。不合法利用unserialize()轻易招致平安隐患。
咱们提交 http://127.0.0.1/unserialize.php?saved_code=O:7:%22Example%22:1:{s:3:%22var%22;s:10:%22phpinfo%28%29;%22;} 即履行phpinfo()。
5.4 轻易招致平安成绩的函数
同类型函数还有良多
array_map()
usort(), uasort(), uksort()
array_filter()
array_reduce()
array_diff_uassoc(), array_diff_ukey()
array_udiff(), array_udiff_assoc(), array_udiff_uassoc()
array_intersect_assoc(), array_intersect_uassoc()
array_uintersect(), array_uintersect_assoc(), array_uintersect_uassoc()
array_walk(), array_walk_recursive()
xml_set_character_data_handler()
xml_set_default_handler()
xml_set_element_handler()
xml_set_end_namespace_decl_handler()
xml_set_external_entity_ref_handler()
xml_set_notation_decl_handler()
xml_set_processing_instruction_handler()
xml_set_start_namespace_decl_handler()
xml_set_unparsed_entity_decl_handler()
stream_filter_register()
set_error_handler()
register_shutdown_function()
register_tick_function()
即使你理解不了PHP,但是也必须先跟它混个脸熟,看,一遍遍的看,看的同时一边琢磨,一边按照它所教的打代码,即使你搞不清楚那些代码到底是干嘛的,但是起码你应该找找感觉。 Ps:以上纯属原创,如有雷同,纯属巧合 先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。 多看优秀程序员编写的代码,仔细理解他们解决问题的方法,对自身有很大的帮助。 其实也不算什么什么心得,在各位大侠算是小巫见大巫了吧,望大家不要见笑,若其中有错误的地方请各位大虾斧正。 有位前辈曾经跟我说过,phper 至少要掌握200个函数 编起程序来才能顺畅点,那些不熟悉的函数记不住也要一拿手册就能找到。所以建议新手们没事就看看php的手册(至少array函数和string函数是要记牢的)。 作为一个合格的coder 编码的规范是必须,命名方面我推崇“驼峰法”,另外就是自己写的代码最好要带注释,不然时间长了,就算是自己的代码估计看起来都费事,更不用说别人拉。 爱上php,他也会爱上你。 至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。 为了以后维护的方便最好是代码上都加上注释,“予人方便,自己方便”。此外开发文档什么的最好都弄齐全。我觉得这是程序员必备的素质。虽然会消耗点很多的时间。但是确实是非常有必要的。 写的比较杂,因为我也是个新手,不当至于大家多多指正。 我学习了一段时间后,我发现效果并不好(估计是我自身的问题)。因为一个人的精力总是有限的,同时学习这么多,会导致每个的学习时间都得不到保证。 这些都是最基本最常用功能,我们这些菜鸟在系统学习后,可以先对这些功能深入研究。 学习php的目的往往是为了开发动态网站,phper就业的要求也涵盖了很多。我大致总结为:精通php和mysql 如果你已经到这种程度了,那么你已经可以做我的老师了。其实php也分很多的区域, 要进行开发,搭建环境是首先需要做的事,windows下面我习惯把环境那个安装在C盘下面,因为我配的环境经常出现诡异事件,什么事都没做环境有的时候就不能用啦。 这些都是最基本最常用功能,我们这些菜鸟在系统学习后,可以先对这些功能深入研究。 有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。 要进行开发,搭建环境是首先需要做的事,windows下面我习惯把环境那个安装在C盘下面,因为我配的环境经常出现诡异事件,什么事都没做环境有的时候就不能用啦。 实践是检验自己会不会的真理。
页:
[1]
2