WEB新手之sql注入

摘要:
这似乎是一个SQL注入问题。您可以看到后台有两个变量,即uname和passwd。接下来,阅读背景代码。这意味着,如果用户输入的密码与select语句在经过MD5加密后选择的密码相等,则会输出“loginaccess”;否则,将输出“登录失败”。在这里使用md5()条件语句,我们可以在后台注入SQL语句。合同发出后,这里后台的SQL语句实际上变成了“从gwuserwhere username='-1'union select md5#'中选择密码”。首先,尝试SQL注入来分解表,如下图所示。

  继续写题。

WEB新手之sql注入第1张

  这题看上去是一道sql注入题。F12查看后台代码。

WEB新手之sql注入第2张

  可以看到后台有两个变量,分别是uname以及passwd。然后接下来读一下后台的代码,这里的意思是,如果用户输入的密码经过md5加密后,和通过select语句选出来的password相等,则输出“login success”,否则输出“login fail”。利用这里md5()条件语句,我们可以对后台的sql语句进行注入。

WEB新手之sql注入第3张

  发包之后,这里后台的sql语句实际上就变成了"select password from gwuser where username ='-1' union select md5(1)#'"。接下来后台条件语句进行判断的时候,因为此时row['password']为md5(1),而发过去的包里面passwd亦等于md5(1),条件成立,所以页面会跳转到这样一个界面,如下图所示。

WEB新手之sql注入第4张

  继续F12查看后台代码,如下图所示。

WEB新手之sql注入第5张

  可以看到后台也有两个变量,分别是no和name。先尝试一下sql注入爆表,如下图所示。

WEB新手之sql注入第6张

  成功爆出表名——“gwhts"

  而后继续爆行,如法炮制。不过接下来很快会发现报错,弹出"Attack!"

WEB新手之sql注入第7张

  检查过自身语句没有错误后,这时考虑到了后台对标点符号的过滤(本题亮点)。于是将? / . ' ` "等英文标点符号导入到burpsuit,一起发包,得到下图。

WEB新手之sql注入第8张

 WEB新手之sql注入第9张

  通过上面两张图我们可以发现,在输入name变量的时候, ' 被后台过滤掉了,而其他字符没有。于是sql注入语句应该要改为"no=-1&name= union select column_name from information_schema.columns where table_name="gwhts" limit 1,1#"。爆出行val。

  最后爆出flag。如下图所示。

WEB新手之sql注入第10张

免责声明:文章转载自《WEB新手之sql注入》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇c# 如何获取项目的根目录[转]68013开发笔记之一下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

select模式学习(二)之:客户端

#include "stdafx.h" //////////////////////////////////////////////// TCP Client 非阻塞模式设定////////////////////////////////////////////// #pragma comment(lib,"ws2_32.lib") #include &l...

mybatis-- 分页插件(pageHelper)

pageHelper插件的优点和弊端 1.优点:快速,方便,简洁的查询结构,后端只需要提供一个select查询返回数据,插件自动给你的分页 java代码框架 @GetMapping("/ceshi")public BaseResponse ceshi(Model model, @RequestParam(required = false, defaultV...

JAVA框架-Mybatis中(代理、动态SQL和高级映射)

Mapper代理 在上一个博客中,我们直接利用session和<select>标签来执行sql的方式存在一些问题。 session执行sql时都需要提供要执行sql的id,而这个id是字符串类型,意味着id是否正确在编译期间是无法获知的,必须等到运行时才能发现错误, sql需要的参数和返回值类都不明确,这也增加了出错的概率 我们最理想的方式...

Ubuntu10.04下安装SQLite3(转贴)

Ubuntu linux下安装sqlite3 1.介绍:sqlite3是linux上的小巧的数据库,一个文件就是一个数据库。 2.安装: 要安装sqlite3,可以在终端提示符后运行下列命令: sudo apt-get install sqlite3 检查版本 sqlite3 -version 3.测试 当前目录下建立test.db测试数据库文件 s...

MyBatis映射文件(编写SQL语句;可有可无(无的时候,使用注解编程))

 一、映射文件  1.简单的增删改(需要commit)---查 MyBatis允许增删改直接定义以下类型返回值   Integer、Long、Boolean、void 我们需要手动提交数据。   sqlSessionFactory.openSession();===>需要手动提交   sqlSessionFactory.openSession(tr...

ACCESS和MSSQL-如何随机读取数据库记录

查询语句只要这样写,就可以随机取出记录了 SQL="Select top 6 * from Dv_bbs1 where isbest = 1 and layer = 1 order by newID() desc" 在ACCESS里SELECT top 15 id FROM tablename order by rnd(id) SQL Server:Sel...