写在前面:
此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出。欢迎各位前来交流。(部分材料来源网络,若有侵权,立即删除)
第二十一关
- 正常登录返回结果
- 判断是cookie注入
- 抓包
- 基于’)字符型的Cookie注入
- 注入语句需要使用base64进行加密
- 加密
- 使用的注入语句是显示位判断的注入语句
- 后续就可以随意进行操作
- get it
第二十二关
- 可以看到和上一题非常类似
- 所以抓个包猜一猜闭合符,试了几次发现是双引号
- 然后按照上一题的思路抓包改包放包
- 抓包结果如上
- 然后修改cookie,在后面添加注释语句
uname=" union select 1,2,3#
- 然后还得使用base64编码
- 成功使用显示位查询注入语句
- get it
第二十三关
- 好像又回到梦开始的地方
- id范围在1-12会正常返回
- 并且测试出单引号会报错
- 但与前十题不太相同
- 因为很神奇的发现注释符号貌似用不了
- 所以只能把后面的单引号闭合符构造成字符串并使用and连接
- 例子就是输入一个单引号会报错,输入两个单引号就正常了
- 注一个试试
- easy
- get it
第二十四关
- 正常登录的界面如下
- 尝试多次的结果是并没有找到注入点
- 想了想,发现这道题不是为了让我们获取到数据库信息,而是获取到其他用户的密码,通过非法修改其他用户的密码。毕竟有一个更改密码的页面(好吧我又看了大佬的wp@东京没有下雨天)
- 首先我先注册一个用户名为test密码为1的账号
- 注册后的结果如上,二次注册显示账号已经注册了表示我们前面注册成功了
- 登录进来就是我们看到的密码更改界面
- 这个时候我们注册一个新的用户test’#密码为123
- 这个时候可以改密码改成123456
- 尝试登录test’#
- 发现还是使用的来的密码
- 登录test
- 发现test的密码为更改test’#时重新设置的123456
$sql = "UPDATE users SET PASSWORD='$pass' where username='$username' and password='$curr_pass' ";
- 更新密码的语句如上
- get it
第二十五关
- 老套路id输入参数1-12
- 字符型输入所以开始判断闭合符
- 单引号闭合符
- or 与 and 被注释了
- 那就不采用
- 使用联合查询替代,或者使用连接词替代都是可以的
id=-1' union select 1,2,3#
- get it
A
- 数值型
- get it
第二十六关
- 和上一题类似但是是空格被注释掉
- 进一步尝试发现and or 注释符和空格都无了
- 双单引号测试出闭合符
- 出于不能使用空格,就改用anandd
?id=-1%27aandnd(updatexml(1,%27~hello%27,1))anandd%27
- 报错注入
- get it
A
- 试出了闭合符
- 用上题一样的注入语句
- get it
第二十七关
- 这次轮到union和select了
- 离谱的发现把注释符也ban了
- 那就单引号无注释符报错注入吧
- 连接符正常未被禁用
?id=1%27and(updatexml(1,%27~hello%27,1))and%27
- 报错注入
A
- 试出闭合符为双引号后步骤同上
第二十八关
-
判断闭合符号为单引号加括号闭合
-
id=111') UnIon All Select ('1'),2,('3
-
和前面类似,但是注入结果返回却报错
-
多次尝试未果,查找资料发现是因为注入语句未进行url编码
- 尝试注入
- 得到显示位置
- get it
A
- 注入方法和前面的题目一样
- 后续会使用盲注进行处理
- get it
第二十九关
- 闭合符为单引号
- 基础sql注入是成功的
- 但是很显然这题中重点不在这儿
- 找到一个login.php进行看看
- 挺复杂的,查找资料发现是双服务器
- 另一个接口
- 尝试闭合符则会报错
- 查找资料发现得传双参数进去(好吧我又看了大佬的wp@东京没有下雨天)
/login.php?id=1&id=0' union select 1,database(),3--+
- 翻译翻译就是:这道题目环境是双服务器的,对于同一个参数的两次传入,两种服务器解析的值不同,从而产生了这种注入
- get it
第三十关
- 看情况应该也是双服务器的情况
- index.php轻轻松松解决双引号注入
- login.php基于双引号的参数污染绕过
id=1&id=-1" union select 1,2,3%23
- get it
继续摸鱼