免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3177 | 回复: 2
打印 上一主题 下一主题

php智能分页类代码(附PHP万能密码) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-01-28 12:23 |只看该作者 |倒序浏览
ahsxw原创代码
大家觉得有用就顶下哈!
  1. <?php
  2. //版板所有
  3. //可以实现在功能变动时,连接自动更新
  4. class pager{
  5. /*
  6. $newPager = new pager();
  7. $newPager->page=1; 起始页
  8. $newPager->pageDisplay=5; 显示页码
  9. $newPager->table="product"; //数据表
  10. echo $newPager->outputPager(); 输出分页
  11. */

  12. var $page; //默认页
  13. var $pageDisplay;//显示页数
  14. var $table;//要分页的表
  15. var $pageNum;
  16. function newURL(){
  17. $url = $_SERVER['REQUEST_URI'];//获取URL
  18. $explodeUrl = explode("&p=",$url);//分解URL
  19. $newURL = $explodeUrl[0];
  20. return $newURL;
  21. }
  22. function total(){//信息数
  23. $sqlTable = mysql_query("select * from $this->table");
  24. $num = mysql_num_rows($sqlTable);
  25. return $num;
  26. }
  27. function pageNum(){//页数
  28. if($this->total()%$this->pageDisplay){
  29. $this->pageNum = intval($this->total()/$this->pageDisplay)+1;
  30. }
  31. else{
  32. $this->pageNum=$this->total()/$this->pageDisplay;
  33. }
  34. return $this->pageNum;
  35. }
  36. function page(){//下一页
  37. if($_GET['p']!=""){$this->page=$_GET['p']+1;}
  38. if($_GET['p'] >= $this->pageNum()){$this->page=$this->pageNum();}
  39. return $this->page;
  40. }
  41. function nextpage(){//上一页
  42. $next = $_GET['p']-1;
  43. if($next<=0){$next=0;}
  44. return $next;
  45. }
  46. function start(){
  47. $start = ($this->page()-1)*$this->pageDisplay;
  48. return $start;
  49. }
  50. function outputPager(){
  51. if($this->pageNum()>1){
  52. return "<div id='pageDiv'>
  53. <ul>
  54. <li><a href='".$this->newURL()."&p=0'>|首页|</a><li>
  55. <li><a href='".$this->newURL()."&p=".$this->nextpage()."'>|上一页|</a></li>
  56. <li><a href='".$this->newURL()."&p=".$this->page()."'>|下一页|</a></li>
  57. <li><a href='".$this->newURL()."&p=".$this->pageNum."'>|未页|</a></li>
  58. <li>".$this->page."/".$this->pageNum()."页</li>
  59. <li>共".$this->total()."项</li>
  60. </div>
  61. ";
  62. }
  63. }
  64. }
  65. class area{

  66. }
  67. ?>
复制代码


PHP万能密码


说实话如果一个网站的前台都是注入漏洞,那么凭经验,万能密码进后台的几率基本上是

百分之百。

     可是有的人说对PHP的站如果是GPC魔术转换开启,就会对特殊符号转义,就彻底杜绝了

PHP注入。

     其实说这话的人没有好好想过,更没有尝试过用万能密码进PHP的后台。

     其实GPC魔术转换是否开启对用万能密码进后台一点影响也没有。

      如果你用这样的万能密码'or'='or',当然进不去,理由是GPC开启的时候单引号会被转换。

     PHP注入时我常用的万能密码是:'or 1=1/*.

     那我们分析一下为什么这可以进后台。

     如果sql语句这样写:"SELECT * FROM admin where name='".$_POST['name']."'and

password='".$_POST['password']."'",那我们在帐号处输入万能密码'or 1=1/*,密码随便输,sql

语句就成了select * from admin where name='’or 1=1/*' and password='任意字符'。

     /*为mysql的注释符,这样后面的东西就都被注释掉了,也就是为什么密码随便输的原因。

     假设GPC转换没有开启,那么请看:where name='’or 1=1(*/后面的东西被注释掉了),

name='’的逻辑值为假,而后面的1=1逻辑值则为真,对于整体就成了假 or 真,最终的逻辑值

还是真,就进后台了。

     那么如果GPC转换开启了,就对单引号进行了转换。语句就变成了where name='\’or 1=1,在

看一下和刚才有什么区别,无非是多了个\。name='\'与name=''的逻辑值一样,都为假,那1=1

为真,总的sql语句的逻辑值不还是真吗?那有进不去后台的理由吗?

     所以总的来说,php网站的万能密码可以这样写:'or 1=1/*,而GPC转换是否开启对它没有任

何影响!


所以请改变你的想法:存在字符型注入的php网站是可以用万能密码'or 1=1/*的

论坛徽章:
0
2 [报告]
发表于 2011-01-28 17:17 |只看该作者
随便提一下   

1   $this->pageNum = intval($this->total()/$this->pageDisplay)+1;

如果  $this->pageDisplay 设为10    $this->total() 得到结果是10,  那么实际总页数应是1, 根据class就会得到2吧?   


2  total()方法 换成  var total;或许会好点。  总记录数在类里边得到,万一sql发生变化(有条件查询,多表等)那么你的page类就需要改动了。 若换种形式 通过$newPager->total=105; 这样就不需要再变更原有的类了。 毕竟total在类外面也能得到

论坛徽章:
0
3 [报告]
发表于 2011-02-15 11:47 |只看该作者
不错的代码 ,但是,假静态时候怎么办?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP