sqli-labs(八)——修改密码处sql注入+http头sql注入
第17关:
这是一个重置密码的功能存在sqk注入,尝试账号密码都输入'",发现只会显示登陆失败,没有报错信息。

这个时候先推测一下后台的sql形式大概应该是: update users set password = ? where name =?
那么实际上是有两个处注入,我们可以先尝试name参数的注入
分别输入:
uname=1' or 1=1 # &passwd=1&submit=Submit
uname=1') or 1=1 # &passwd=1&submit=Submit
uname=1"or 1=1 # &passwd=1&submit=Submit
uname=1") or 1=1 # &passwd=1&submit=Submit
发现页面都没有变化,于是我初步判断username参数可能没有注入漏洞
尝试password参数,这里我踩了一个坑,我开始输入的是
分别输入
uname=1 &passwd=1' or 1=1 # &submit=Submit
uname=1 &passwd=1') or 1=1 # &submit=Submit
uname=1 &passwd=1"or 1=1 #&submit=Submit
uname=1 &passwd=1") or 1=1 #&submit=Submit
发现页面也没有变化,后来看了源码才发现

这里会先用uname进行查询操作,存在该用户才会进行修改操作,于是我输入
uname=admin &passwd=1' or 1=1 # &submit=Submit

显示成功页面了,说明后台是使用的单引符号进行的拼凑。
输入uname=admin &passwd=1‘&submit=Submit ,看下程序是否会报错(如果不报错,就只能尝试盲注了)

可以看到有报错信息,可以先尝试报错注入。

后面的就直接将select user()替换成其他的查询语句即可。
这里还有一个点需要注意的,concat里面不能直接使用~,必须用0x7e。
第十八关:
这关是一个关于http header的注入

使用正确的账号密码登陆后发现,会将http header中的User-Agent显示在页面上,这关需要利用到burp,输入正确的账号密码后,提交,使用burp拦截。

我在User-Agent后面加单引符号后,发现页面会爆sql的错误,如下图

从报错信息可以看到后面还有两个参数,一个是ip,一个是用户名。如果对sql语句有一定了解的人,应该知道后台应该是个insert的操作
INSERT INTO 表名称 VALUES (值1, 值2,....)
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....) 不管是上面哪一种,我们只需要使用报错注入后将后面的的参数补全,然后加上注释,如下图:

成功查询出数据

后面的操作就不继续了。
HTTP 请求头中除了 User-Agent可能存在sql注入意外,还有referer、X-Forwarded-For可能存在sql注入。
第十九关:
这是一个referer的注入,上一关也提到了,测试方法和上一关完全一样,只是出现的地方不一样而已。
sqli-labs(八)——修改密码处sql注入+http头sql注入的更多相关文章
- 【sqli-labs】 less24 POST- Second Order Injections *Real treat* -Stored Injections (POST型二阶注入 *真的好玩?* 存储注入)
简单登陆浏览一遍后,发现是一个登陆注册修改密码的应用 审查一下代码 登陆页面的username,password使用了转义 注册页面的参数也进行了转义处理 但是在修改password的页面,直接从se ...
- SQL注入系列:SQLi Labs
前言 关于注释 说明:在SQL中--[空格]表示注释,但是在URL中--空格在发送请求的时候会把最后的空格去掉,所以用--+代替,因为+在被URL编码后会变成空格 MYSQL有三种常用注释: --[空 ...
- ATM-JAVA程序 //程序有5处相同错误,找不出原因 转账功能没有实现,修改密码来不及实现了
package JCC;//信1705-3 20173681 靳晨晨import java.io.BufferedReader;import java.io.File;import java.io.F ...
- sqlite修改表、表字段等与sql server的不同之处
sqlite中只支持 ALTER TABLE 命令的 RENAME TABLE 和 ADD COLUMN. 其他类型的 ALTER TABLE 操作如 DROP COLUMN,ALTER COLUMN ...
- 九十八:CMS系统之登录页面CSRF保护和修改密码页面
加上CSRF防御 修改密码页面 视图 class ResetPwd(views.MethodView): decorators = [login_required] # 校验登录状态 def get( ...
- SQLI LABS Basic Part(1-22) WriteUp
好久没有专门练SQL注入了,正好刷一遍SQLI LABS,复习巩固一波~ 环境: phpStudy(之前一直用自己搭的AMP,下了这个之后才发现这个更方便,可以切换不同版本的PHP,没装的小伙伴赶紧试 ...
- 注入学习1:SQL注入语句大全
学习背景 之前做了xss预防,以及些许的注入预防了,但是不够全面,如果还是搜集了下一些常用的注入手段,以此用来进行更好的预防. 什么是注入 一般来说,SQL注入一般存在于形如:HTTP://xxx.x ...
- Atitit 修改密码的功能流程设计 attilax总结
Atitit 修改密码的功能流程设计 attilax总结 1.1. 注意点1 1.2. 设计修改用户密码功能时把用户ID保存在哪里?1 1.3. Ui设计1 1.4. 功能设计源码1 1.5. Agt ...
- 使用sqlmap注入DVWA的SQL Injection菜单
1 使用sqlmap注入DVWA的SQL Injection菜单 本教程中的登陆地址:http://192.168.0.112/dvwa/login.php 1.1 获取cookie信息 1) 使用a ...
随机推荐
- 在Spring的Bean注入中,即使你私有化构造函数,默认他还是会去调用你的私有构造函数去实例化
在Spring的Bean注入中,即使你私有化构造函数,默认他还是会去调用你的私有构造函数去实例化. 如果我们想保证实例的单一性,就要在定义<bean>时加上factory-method=” ...
- Exception 01 : org.hibernate.engine.jndi.JndiException: Error parsing JNDI name [foo]
异常名称 org.hibernate.engine.jndi.JndiException: Error parsing JNDI name [foo] 异常截屏 异常详细信息 org.hibernat ...
- [Day5]方法
1.方法 (1)概念:方法就是用来完成解决某件事情或实现某个功能的办法 会包含很多条语句用于完成某些有意义的功能 通过在程序代码中引用方法名称和所需的参数,实现在该程序中执行(或称调用)该方法 (2) ...
- git 将本地仓库提交至github
-or create a new repository on the command line touch README.md git init git add README.md git commi ...
- 预备作业2 :学习基础和C语言基础调查
剑网三毒经pk心得: 看完标题的你真的没有进错,这里是博客园. 想到写这篇文章的原因一部分是自己的确没啥技能比超过90%以上的人还好,还有一部分是受到了作业提示的指引...... 如果你有类似的技能获 ...
- ASCLL码中的一些小知识
其次要记住asill值中 65是A 97是a A与a之间相隔32,用int转换后再用char转换回来. char b = s.charAt(i);为字符串转换成一个一个的.
- 【托业】【新托业TOEIC新题型真题】学习笔记5-题库二->P7
--------------------------------------单词-------------------------------------- amenity 适意:休闲设施 onsit ...
- .NET Core 用 VS Code新建各种类型的项目
用命令行找个地方, 建立目录, 然后执行一下dotnet new --help命令, 查看一下建项目的帮助: 那我建立一个不带用户验证的mvc项目: dotnet new mvc --auth Non ...
- 所使用的“System.Web.Mvc, Version=3.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35”版本高于所引用的程序集“System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”的版本
System.Web.Mvc.dll引用是感叹号. 解决方法:新建mv3应用程序,右键选择System.Web.Mvc.dll 查看所引用的路径. 在旧程序中重新引用即可.C:\Program Fil ...
- 利用Linux的硬连接删除MySQL大文件
利用Linux的硬连接删除MySQL大文件 http://blog.csdn.net/wxliu1989/article/details/22895201 原理:硬链接基础当多个文件共同指向同一ino ...